Pergunta

Estou trabalhando em um projeto em que me deparei com um problema de conversão CStringW para CStringA para string multibyte como o idioma japonês.

Estou carregando a string de recursos de string usando LoadString() Método.Eu tentei seguir o código, mas parece não funcionar.

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

E

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

Eu também tenteiwcstombs() também.

Alguém pode me dizer como posso converter CStringW para CString?Desde já, obrigado.

Foi útil?

Solução

CStringW lojas Unicode UTF-16 cordas.

O que codificação você espera para o seu CStringA?

Você quer UTF-8?
Neste caso, você pode fazer:

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

Falando sobre CStringA sem especificar uma codificação não faz sentido.

O segundo parâmetro de CW2A é o que é passado para WideCharToMultiByte() API Win32 como CodePage (Observe que CW2A é essencialmente um wrapper C++ RAII seguro e conveniente em torno desta API).Se você seguir esta documentação da API, poderá encontrar diversos "página de código" valores (ou seja,codificações).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top