2009-09-17 10 views
9

Estoy recibiendo un mensaje de error bastante extraño cuando se trata de wcout un wstring en VC++ 2008 Express:Error C2679 al intentar usar std :: wcout << wstring-var; VC++ 2008 Express

error C2679: binario '< <': ningún operador se encontró que tiene un operador de la derecha del tipo 'std :: wstring' (o no hay una conversión aceptable)

Si entiendo esto correctamente, ¿está informando que wcout no acepta un wstring? Le pido a alguien que compile este código en Linux y funciona bien. También probé el mismo código en otra computadora con vC++ 2008 express y todavía falla. ¿Un problema conocido con std en vC++ 2008?

#include <iostream> 

int main() 
{ 
std::wstring unicode_test = L"Unicode var"; 
std::wcout << L"Unicode non-var" << std::endl; 
std::wcout << unicode_test << std::endl; //<-- This line fails! 
} 

Estoy usando vC++ 2008 express sp1 con todas las actualizaciones hasta KB948127. Soy consciente de que la consola necesitará cambios en la página de códigos, pero esto ni siquiera está compilando. Gracias.

Respuesta

12

Necesita #include <string>. No estoy seguro de lo que dice el estándar, pero estoy bastante seguro de que <iostream> no está obligado a exportar todos los <string>, si corresponde.

[editar] Al menos cplusplus.com ni siquiera muestra string como los tipos declarados en <iostream>. No, no es el estándar, lo sé ... [/ edit]

+0

Lo que te engaña es que la línea que declara un 'wstring' funciona. Incluyendo obtiene suficiente de para poder declarar uno, pero no 'operator <<' - solo lo suficientemente útil para perjudicar, supongo. –

Cuestiones relacionadas