convertir c++ c++-cli wstring

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:

  1. Incluir encabezados
    #include <io.h>
    #include <fcntl.h>
  2. Establecer el modo estándar
    _setmode(_fileno(stdout), _O_U16TEXT)

Resultado:


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;