Удаление всех пробелов для форматирования вывода

not необходимо поместить реализацию в файл заголовка, см. альтернативное решение в конце этого ответа.

В любом случае причина, по которой ваш код не работает, что при создании экземпляра шаблона компилятор создает новый класс с заданным аргументом шаблона. Например:

template
struct Foo
{
    T bar;
    void doSomething(T param) {/* do stuff using T */}
};

// somewhere in a .cpp
Foo f; 

При чтении этой строки компилятор создаст новый класс (назовем его FooInt), что эквивалентно следующему:

struct FooInt
{
    int bar;
    void doSomething(int param) {/* do stuff using int */}
}

Следовательно, компилятор должен иметь доступ к реализации методов, чтобы создать экземпляр с аргументом шаблона (в данном случае int). Если эти реализации не были в заголовке, они не были бы доступны, поэтому компилятор не смог бы создать экземпляр шаблона.

Общим решением для этого является запись объявления шаблона в заголовок файла, затем реализовать класс в файле реализации (например, .tpp) и включить этот файл реализации в конец заголовка.

// Foo.h
template 
struct Foo
{
    void doSomething(T param);
};

#include "Foo.tpp"

// Foo.tpp
template 
void Foo::doSomething(T param)
{
    //implementation
}

Таким образом, реализация по-прежнему отделена от объявления, но доступен компилятору.

Другое решение состоит в том, чтобы сохранить реализацию отдельно и явно создать все экземпляры шаблона, которые вам понадобятся:

// Foo.h

// no implementation
template  struct Foo { ... };

//----------------------------------------    
// Foo.cpp

// implementation of Foo's methods

// explicit instantiations
template class Foo;
template class Foo;
// You will only be able to use Foo with int or float

Если мое объяснение isn ' t достаточно ясно, вы можете взглянуть на C ++ Super-FAQ по этому вопросу .

0
задан bob500000 18 January 2019 в 12:34
поделиться

3 ответа

Решение вопроса заключается в использовании следующего:

-replace '\ s \ s +'

Это удаляет все пробелы из текстового файла, и вы можете заменить на символ и разделите на том же персонаже, чтобы создать свой CSV.

0
ответ дан bob500000 18 January 2019 в 12:34
поделиться

Вы можете просто обновить рассчитанные свойства, поэтому замена используется только свойством Name:

Get-WmiObject win32_share -ComputerName $PC | 
    Select-Object -Property @{Name="Server";Expression={

Вы можете просто обновить рассчитанные свойства, поэтому замена используется только свойством Name:

[110]

..__Server}},Path,@{Name="Name";Expression={

Вы можете просто обновить рассчитанные свойства, поэтому замена используется только свойством Name:

[110]

..Name.replace(" ","")}} | Format-Table -AutoSize

.

0
ответ дан James C. 18 January 2019 в 12:34
поделиться

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

Sort-Object -Property path | ft @{Name="Server";Expression={

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

Sort-Object -Property path | ft @{Name="Server";Expression={

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

[111]

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.__Server}},@{Name="Path";Expression={"'

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

[111]

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.Path'"}},Name -autosize

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.__Server}},@{Name="Path";Expression={

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

Sort-Object -Property path | ft @{Name="Server";Expression={

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

[111]

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.__Server}},@{Name="Path";Expression={"'

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

[111]

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.Path'"}},Name -autosize

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.Path.replace(" ","")}},Name -autosize

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

Sort-Object -Property path | ft @{Name="Server";Expression={

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

[111]

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.__Server}},@{Name="Path";Expression={"'

Вы уже используете вычисляемое свойство в столбцах. Используйте тот же путь для Пути.

[110]

Но вы должны знать, что C:\MyPath! = C:\My Path. Чтобы использовать пути с пробелами, заключите их в " или '. > 'C:\My Path'
Чтобы заменить путь на путь в кавычках, вы можете использовать следующий код:

[111]

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

.Path'"}},Name -autosize

Thx James C. для указания на использование .replace() вместо .trim(). Я забыл, что .trim() работает только с пробелами в начале и конце строки, а .replace() удаляет все пробелы.

0
ответ дан T-Me 18 January 2019 в 12:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: