Как преобразовать строку в LPWSTR в C++

IIf является фактической функцией, таким образом, все аргументы оценены. , Если ключевое слово было добавлено к VB.NET 2008 для обеспечения функциональности короткого замыкания, Вы ожидаете.

Попытка

logLine = "e.Value: " + If(e.Value Is Nothing, "", e.Value.ToString())

12
задан CraftedGaming 21 September 2017 в 09:15
поделиться

4 ответа

Самый простой способ преобразовать строку ansi в широкую строку (unicode) - использовать макрос преобразования строки .

Чтобы использовать их, поместите USES_CONVERSION в начало вашей функции, затем вы можете использовать макросы, такие как A2W (), для очень простого выполнения преобразования.

например.

char* sz = "tadaaa";
CreateProcessW(A2W(sz), ...);

Макросы выделяют место в стеке, выполняют преобразование и вернуть преобразованную строку.

5
ответ дан 2 December 2019 в 06:09
поделиться

Если у вас есть строка ANSI, подумывали ли вы о вызове CreateProcessA вместо этого? Если есть особая причина, по которой вам нужно вызвать CreateProcessW , тогда вам нужно будет преобразовать строку. Попробуйте функцию MultiByteToWideChar .

12
ответ дан 2 December 2019 в 06:09
поделиться

Кроме того, вы можете подумать об использовании TCHAR повсюду ... Если я прав, идея будет примерно такой:

typedef std::basic_string<TCHAR> tstring

// Make any methods you control return tstring values. Thus, you could write:
tstring command = obj.getInstallationPath();
CreateProcess(x, command.c_str(), ...);

Обратите внимание, что мы используем CreateProcess вместо CreateProcessW или CreateProcessA . Идея состоит в том, что если UNICODE определен, то TCHAR будет typedef отредактирован до WCHAR , а CreateProcess будет #define d должен быть CreateProcessW , который принимает LPWSTR ; но если UNICODE не определен, то TCHAR становится char , а CreateProcess становится CreateProcessA , который принимает LPSTR .

3
ответ дан 2 December 2019 в 06:09
поделиться

Вы можете сохранить его в a CString и вызовите для него оператор LPWSTR:

const char* sz = "tadaaa";
const CString s( sz );
LPCWSTR ws = static_cast<LPCWSTR>( s ); //calling CString::operator (LPCWSTR)()const;

Обратите внимание, что оператор приведения WSTR определен только для сборок Unicode.

1
ответ дан 2 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

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