Ich suche nach einer Methode oder ein Code-Schnipsel zur Umwandlung von std :: string konvertieren LPCWSTRWie std :: string LPCWSTR in C++ (Unicode)
Antwort
Vielen Dank für den Link zum MSDN-Artikel. Genau das habe ich gesucht.
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();
(Diese Frage wurde zufällig gefunden; es ist lange her, dass ich C++ gemacht habe.) Also hat die Standardbibliothek keine std :: string -> std :: wstring-Umwandlung? Das scheint komisch zu sein; Gibt es einen guten Grund? – Domenic
Wenn Sie std :: vector
Grund # 233, warum C++ die Hölle mich ärgert..10 Zeilen Code für eine einfache String-Konvertierung =/ –
Statt einem std :: string verwenden, Sie könnten ein Std :: Wstring verwenden.
EDIT: Sorry das ist nicht mehr erklärend, aber ich muss laufen.
Verwendung std :: wstring :: c_str()
* F: "Ich muss von X zu Y konvertieren." * - * A: "Suchen Sie nach einem Job, in dem sie A anstelle von X verwenden." * Dies ist nutzlos. – IInspectable
Wenn Sie in einer ATL/MFC-Umgebung sind, können Sie die ATL-Konvertierung Makro verwenden:
#include <atlbase.h>
#include <atlconv.h>
. . .
string myStr("My string");
CA2W unicodeStr(myStr);
Sie können dann unicodeStr als verwenden LPCWSTR. Der Speicher für die Unicode-Zeichenfolge wird auf dem Stapel erstellt und freigegeben, dann wird der Destruktor für UnicodeStr ausgeführt.
Die Lösung ist eigentlich viel einfacher als alle anderen Vorschläge:
std::wstring stemp = std::wstring(s.begin(), s.end());
LPCWSTR sw = stemp.c_str();
Das Beste von allem, es ist plattformunabhängig. h2h :)
Sorry Benny, aber das funktioniert nicht für mich, Torans eigene Lösung scheint aber gut zu funktionieren (but..bled!). –
funktioniert gut. Vielen Dank. – Durgesh
Dies funktioniert nur, wenn alle Zeichen ein einzelnes Byte sind, d. H. ASCII oder [ISO-8859-1] (http: //en.wikipedia.org/wiki/ISO-8859-1). Alles Multibyte wird kläglich scheitern, einschließlich UTF-8. –
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;
Sie CString
als Zwischen verwenden:
std::string example = "example";
CString cStrText = example.c_str();
LPTSTR exampleText = cStrText.GetBuffer(0);
- 1. Std :: String und Std :: Map-Operationen auf Unicode-String
- 2. LPCWSTR in c manipulieren
- 3. 'System :: String ^' zu 'LPCWSTR'
- 4. Seltsames Verhalten von std :: string mit Unicode
- 5. std :: string und UTF-8 codierte Unicode
- 6. C++ std :: string Konvertierungsproblem auf Windows
- 7. Locale aus Unicode-String in C++
- 8. Wie verkette ich zwei LPCWSTR in C++
- 9. Wie konvertiert man std :: string in CV :: String in C++?
- 10. Saubere Möglichkeit, Python 3 Unicode zu std :: string
- 11. Unicode String in urllib.request
- 12. Convert Float in Std :: String in C++
- 13. Vergleich zwischen Std: String und C-String
- 14. Wie SWIG Std :: String & C# Ref Zeichenfolge
- 15. C++ Std :: String zu Boolean
- 16. Umwandlung in LPCWSTR?
- 17. Get Bytes von Std :: String in C++
- 18. SWIG: Wie umbrechen std :: string & (std :: String übergeben durch Verweis)
- 19. Simple: Wie initialisiert man eine neue unordered_map <std :: string, std :: string> * (Zeiger) in C++?
- 20. Operatorsuffix für std :: string in C++ 14
- 21. C++ Vom Socket in Std :: String lesen
- 22. Mit sprintf mit std :: string in C++
- 23. Lesen von Binärdaten in std :: string C++
- 24. Unicode-Unterstützung in C++ 0x
- 25. Wie Unicode-String in RTF ausgegeben wird (mit C#)
- 26. LPCWSTR von einer Funktion zurückgeben?
- 27. Unicode-String von seinem Code bekommen - C#
- 28. Unicode-String zu Binär-String und Binär-String zu Unicode C#
- 29. C++ .NET konvertieren System :: String in std :: string
- 30. Wie std :: thread :: id in einen String in C++ konvertieren?
Wie tun wir das Gegenteil? – Sohaib
Ich kam von Google versucht, das Gegenteil zu tun. Hast du keine Methode gefunden? –