c++ string mfc cstring mbcs

c++ - No se puede convertir el CStringW en CStringA



cstring access (1)

CStringW almacena CStringW Unicode UTF-16 .

¿Qué codificación esperas para tu CStringA ?

¿Quieres UTF-8 ?
En este caso, puedes hacer:

// strUtf16 is a CStringW. // Convert from UTF-16 to UTF-8 CStringA strUtf8 = CW2A(strUtf16, CP_UTF8);

Hablar de CStringA sin especificar una codificación no tiene sentido.

El segundo parámetro de CW2A es lo que se transfiere a WideCharToMultiByte() Win32 API como CodePage (tenga en cuenta que CW2A es esencialmente un contenedor conveniente de C ++ RAII alrededor de esta API). Si sigue esta documentación de API, puede encontrar varios valores de "página de códigos" (es decir, codificaciones).

Esta pregunta ya tiene una respuesta aquí:

Estoy trabajando en un proyecto donde he abordado un problema de convertir CStringW a CStringA para cadenas de varios bytes como el japonés.

Estoy cargando la cadena de recursos de cadena utilizando el LoadString() . He intentado seguir el código pero parece que no funciona.

CStringW csTest; csTest.LoadString(JAPANESE_STRING); CStringA Msg = CStringA(csTest); // Msg has been returned blank string

Y

std::string Msg = CW2A(csTest);// Msg has been returned blank string

También probé wcstombs() también.

¿Alguien puede decirme cómo puedo convertir CStringW a CString ? Gracias por adelantado.