как конфертировать из LPCSTR в LPCWSTR в c ++ - PullRequest
6 голосов
/ 08 ноября 2011

дополнительная информация я создаю приложение, которое использует WinHttpOpenRequest Api, для которого требуется LPCWSTR для имени объекта и я использую visual studio 2008

Ответы [ 2 ]

12 голосов
/ 08 ноября 2011

Самый простой способ - использовать ATL:

#include <Windows.h>
#include <atlbase.h>
#include <iostream>

int main(int argc, char *argv[]) {
    USES_CONVERSION;
    LPCSTR a = "hello";
    LPCWSTR w = A2W(a);
    std::wcout << w << std::endl;
    return 0;
}

Любая память, выделенная A2W (от ANSI до Wide), будет освобождена при выходе из функции.

4 голосов
/ 08 ноября 2011

Преобразование из символа * имеет хороший образец

char *orig = "Hello, World!";
cout << orig << " (char *)" << endl;

// Convert to a wchar_t*
size_t origsize = strlen(orig) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
wcout << wcstring << endl;

Но, как упоминалось, десять раз. Используйте общее отображение текста , если возможно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...