Я ищу способ, или фрагмент кода для преобразования зОго :: строки LPCWSTRКак преобразовать зЬй :: строки LPCWSTR в C++ (Unicode)
ответ
Спасибо за ссылку на статью MSDN. Это именно то, что я искал.
std::wstring s2ws(const std::string& s)
{
int len;
int slength = (int)s.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
std::wstring r(buf);
delete[] buf;
return r;
}
std::wstring stemp = s2ws(myString);
LPCWSTR result = stemp.c_str();
(нашел этот вопрос в случайном порядке, это было давно, так как я сделал C++.) Значит, стандартная библиотека не имеет преобразования std :: string -> std :: wstring? Это кажется странным; есть ли веская причина? – Domenic 2009-07-29 08:41:11
Вместо использования зОго :: строки, вы можете использовать std :: wstring.
EDIT: Извините, это не более объяснительно, но мне нужно бежать.
Использование станд :: wstring :: c_str()
* Q: «Мне нужно преобразовать из X в Y». * - * A: «Ищите работу, где они используют A вместо X». * Это бесполезно. – IInspectable 2016-06-30 09:51:19
Если вы находитесь в среде ATL/MFC, Вы можете использовать макрос преобразования ATL:
#include <atlbase.h>
#include <atlconv.h>
. . .
string myStr("My string");
CA2W unicodeStr(myStr);
Вы можете использовать unicodeStr как LPCWSTR. Память для строки unicode создается в стеке и освобождается, тогда выполняется деструктор для unicodeStr.
Решение на самом деле намного проще, чем любой из других предложений:
std::wstring stemp = std::wstring(s.begin(), s.end());
LPCWSTR sw = stemp.c_str();
Лучше всего, это зависит от платформы. h2h :)
string s = "Hello World";
std::wstring stemp = std::wstring(s.begin(), s.end());
LPCWSTR title =(LPCWSTR) stemp.c_str();
LPCWSTR wname =(LPCWSTR) "Window";
HINSTANCE hInst = GetModuleHandle(0);
WNDCLASS cls = { CS_HREDRAW|CS_VREDRAW, WndProc, 0, 0, hInst, LoadIcon(hInst,MAKEINTRESOURCE(IDI_APPLICATION)),
LoadCursor(hInst,MAKEINTRESOURCE(IDC_ARROW)), GetSysColorBrush(COLOR_WINDOW),0,wname };
RegisterClass(&cls);
HWND window = CreateWindow(wname,title,WS_OVERLAPPEDWINDOW|WS_VISIBLE,64,64,640,480,0,0,hInst,0);
MSG Msg;
while(GetMessage(&Msg,0,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
Вы можете использовать CString
в качестве промежуточного продукта:
std::string example = "example";
CString cStrText = example.c_str();
LPTSTR exampleText = cStrText.GetBuffer(0);
- 1. Как преобразовать long в LPCWSTR?
- 2. Как преобразовать зЬй :: строки сопзИте полукокс в C++
- 3. Как преобразовать CStringW в LPCWSTR?
- 4. Как преобразовать LPCWSTR в LPWSTR
- 5. Преобразовать поплавок LPCWSTR/LPWSTR
- 6. Как преобразовать Byte * в LPCWSTR в wince6.0?
- 7. Строка для LPCWSTR в C++
- 8. Преобразовать wstringstream к LPCWSTR
- 9. Преобразовать символ [], чтобы LPCWSTR
- 10. cgo - Как преобразовать строку go в LPCWSTR
- 11. Как преобразовать строки Unicode в ISO?
- 12. C++ lpcwstr to wstring
- 13. Как преобразовать зЬй :: строки v8 Местного <string>
- 14. Индексирование строки Unicode в C++
- 15. Как преобразовать путь Unicode в строку c?
- 16. не может преобразовать cont char * в LPCWSTR
- 17. ошибка: не удается преобразовать «зЬй :: строки» к «полукоксу» в назначении
- 18. Как преобразовать unicode в unicode-escaped текст
- 19. преобразовать строковое представление unicode в unicode
- 20. преобразование строки в Unicode в C
- 21. Как перенаправить LPCWSTR в String в C#?
- 22. Как преобразовать числовой символ в Unicode в C++?
- 23. Невозможно преобразовать зЬй :: строку в инициализации
- 24. Ошибка LPCWSTR - C++
- 25. Преобразование QString в LPCWSTR qt C++
- 26. Как преобразовать символ в unicode?
- 27. Как преобразовать число в unicode?
- 28. преобразование между UINT и LPCWSTR в C++
- 29. C++ Unicode Issue
- 30. преобразование строки в unicode «\ u0063» в «c»
Как мы делаем обратное? – Sohaib 2013-10-11 18:59:07
Я пришел из Google, пытаясь сделать обратное. Разве вы не нашли способ? – 2014-11-22 15:19:39