Busco un método, o un fragmento de código para convertir std :: string a LPCWSTRCómo convertir std :: string a LPCWSTR en C++ (Unicode)
Respuesta
Gracias por el enlace al artículo de MSDN. Esto es exactamente lo que estaba buscando.
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();
(Encontré esta pregunta navegando al azar, ha pasado mucho tiempo desde que hice C++.) ¿Entonces la biblioteca estándar no tiene la conversión std :: string -> std :: wstring? Eso parece extraño; ¿Hay una buena razón? – Domenic
Si usa std :: vector
razón # 233 en cuanto a por qué C++ me molesta mucho ... 10 líneas de código para una simple conversión de cadena =/ –
En lugar de utilizar un std :: string, podrías usar std :: wstring.
EDIT: Lo siento, esto no es más explicativo, pero tengo que ejecutar.
uso std :: :: wstring c_str()
* P: "Necesito convertir de X a Y". * - * A: "Busque un trabajo, donde están usando A en lugar de X". * Esto es inútil. – IInspectable
Si se encuentra en un entorno ATL/MFC, puede utilizar la macro de conversión de ATL:
#include <atlbase.h>
#include <atlconv.h>
. . .
string myStr("My string");
CA2W unicodeStr(myStr);
entonces usted puede utilizar como un unicodeStr LPCWSTR. La memoria para la cadena Unicode se crea en la pila y se libera, luego se ejecuta el destructor para UnicodeStr.
La solución es realmente mucho más fácil que cualquiera de las otras sugerencias:
std::wstring stemp = std::wstring(s.begin(), s.end());
LPCWSTR sw = stemp.c_str();
Lo mejor de todo, es independiente de la plataforma. h2h :)
Lo siento Benny, pero eso no me funciona, la propia solución de Toran parece funcionar bien (pero ... ¡lástima!). –
Trabajando bien. Gracias. – Durgesh
Esto solo funciona si todos los caracteres son de un solo byte, es decir, ASCII o [ISO-8859-1] (http: //en.wikipedia.org/wiki/ISO-8859-1). Cualquier cosa de varios bytes fallará miserablemente, incluido 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;
Puede utilizar CString
como producto intermedio:
std::string example = "example";
CString cStrText = example.c_str();
LPTSTR exampleText = cStrText.GetBuffer(0);
- 1. Cómo convertir std :: string a LPCSTR?
- 2. Unicode y std :: string en C++
- 3. Cómo convertir System :: String^en std :: string?
- 4. convertir int a std :: string
- 5. Convertir flotador para std :: string en C++
- 6. Cómo convertir caracteres sin signo * a std :: string en C++?
- 7. convertir std :: string a basic_ostream?
- 8. Unicode std :: string class replacement
- 9. cómo convertir std :: string a QString
- 10. Cómo convertir std :: string a const char *?
- 11. Cómo convertir QString a std :: string?
- 12. Cómo convertir std :: string a NSString?
- 13. Convertir std :: string en QString
- 14. cómo convertir de LPCSTR a LPCWSTR en C++
- 15. Convertir char [] para LPCWSTR
- 16. Cómo convertir CString y :: std :: string :: std :: wstring entre sí?
- 17. 'Sistema :: Cadena ^' a 'LPCWSTR'
- 18. C++ std :: string to boolean
- 19. Cómo convertir UTF8 a Unicode
- 20. ¿Cómo convertir NSString a C string?
- 21. Cómo convertir hebreo (unicode) a Ascii en C#?
- 22. ¿Cómo convierto wchar_t * a std :: string? .?
- 23. no se puede convertir de 'std :: string' a 'LPSTR'
- 24. cómo convertir NSinteger a String
- 25. SWIG: Cómo ajustar std :: string & (std :: string pasado por referencia)
- 26. Cómo convertir UTF-8 std :: string a UTF-16 std :: wstring?
- 27. Obtenga bytes de std :: string en C++
- 28. Cython C++ y std :: string
- 29. ¿Transmitir a LPCWSTR?
- 30. Conversión de std :: string a bool
¿Cómo lo hacemos al revés? – Sohaib
Vengo de google tratando de hacer lo contrario. ¿No encontraste un método? –