Я хочу преобразовать CString
в WCHAR*
или std::string
в WCHAR*
в приложении Visual Studio C++ MFC. Я обнаружил в stackoverflow, что у него есть решение только для преобразования в wchar_t*
.
Пожалуйста, помогите мне. Спасибо!
2 ответа
Когда вы используете CString, вы можете получить доступ к макросу CW2A ATL, который преобразует CString в строку.
CString theCStr;
std::string STDStr( CW2A( theCStr.GetString(), CP_UTF8 ) );
Или обратитесь к этому документу.
WCHAR*
. CW2A
этого не сделает. И это тоже неправильный макрос. Если вы используете CString
(в отличие от CStringW
), совместимый макрос преобразования называется CT2A
.
Я считаю, что класс CString
может сделать такое преобразование:
CStringA a = "ANSI";
CStringW w(a);
CString
в WCHAR*
, но он нашел только решения, которые преобразуются в wchar_t*
. Очевидно, они не понимают, что WCHAR*
и wchar_t*
— это одно и то же в Windows.
Похожие вопросы
Связанные вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.
WCHAR
используется в Windows как псевдоним дляwchar_t
. Вам может быть интересно изучить эти общие типы для Windows< /a> ссылка.CString
— это typedef, который либо псевдонимCStringA
, либоCStringW
. Ответ на этот вопрос будет разным для каждого случая.