Pergunta

Dado que o snippet seguinte não compila:

std::stringstream ss;
ss << std::wstring(L"abc");

Eu também não pensei que este faria:

std::stringstream ss;
ss << L"abc";

Mas isso faz (pelo menos no VC ++). Acho que isso é devido ao seguinte ostream::operator<< sobrecarga:

ostream& operator<< (const void* val );

Isso tem o potencial de quebrar silenciosamente meu código, se eu inadvertidamente misturar tipos de personagens?

Foi útil?

Solução

Isso tem o potencial de quebrar silenciosamente meu código, se eu inadvertidamente misturar tipos de personagens?

Em uma palavra: sim, e não há solução alternativa que eu conheço. Você verá apenas uma representação de um valor de ponteiro em vez de uma sequência de caracteres, para que não seja um acidente em potencial ou um comportamento indefinido, apenas a saída que não é o que você deseja.

Outras dicas

Sim - você precisa wstringstream por wchar_t resultado.

Você pode mitigar isso por não usar literais de string. Se você tentar passar const wstring& para stringstream Não vai compilar, como você observou.

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