c++ - convertir - ¿Cómo inicializar e imprimir un std:: wstring?
convertir string a std:: string (4)
Tenía el código:
std::string st = "SomeText";
...
std::cout << st;
y eso funcionó bien. Pero ahora mi equipo quiere pasar a wstring
. Así que lo intenté:
std::wstring st = "SomeText";
...
std::cout << st;
pero esto me dio un error de compilación:
Error 1 error C2664: ''std :: basic_string <_Elem, _Traits, _Ax> :: basic_string (const std :: basic_string <_Elem, _Traits, _Ax> &)'': no se puede convertir el parámetro 1 de ''const char [8]'' a ''const std :: basic_string <_Elem, _Traits, _Ax> &'' D: ... / TestModule1.cpp 28 1 TestModule1
Después de buscar en la web, leí que debería definirlo como:
std::wstring st = L"SomeText"; // Notice the "L"
...
std::cout << st;
esto compilado pero imprime "0000000000012342"
lugar de "SomeText"
.
Qué estoy haciendo mal ?
Esta respuesta se aplica a la etiqueta "C ++ / CLI" y a la consola de Windows C ++ relacionada.
Si tiene caracteres de varios bytes en std :: wstring, se deben hacer dos cosas más para que funcione:
- Incluir encabezados
#include <io.h>
#include <fcntl.h>
- Establecer el modo estándar
_setmode(_fileno(stdout), _O_U16TEXT)
Para mostrar un wstring también necesita una versión amplia de cout - wcout.
std::wstring st = L"SomeText";
...
std::wcout << st;
Use std::wcout
lugar de std::cout
.
intente usar use std::wcout<<st
solucionará su problema.
std::wstring st = "SomeText";
...
std::wcout << st;