尝试使用std :: wcout<<时出错C2679 wstring的-VAR; vc ++ 2008 express

时间:2009-09-17 13:51:33

标签: unicode visual-c++-2008-express

尝试在vc ++ 2008 express中输入wstring时,我收到一条相当奇怪的错误消息:

  

错误C2679:二进制'<<' :没有找到哪个运算符采用'std :: wstring'类型的右手操作数(或者没有可接受的转换)

如果我理解正确,那报告wcout不接受wstring?我请求有人在linux下编译这段代码,运行正常。我也尝试使用vc ++ 2008 express在另一台计算机上使用相同的代码但仍然失败。 vc ++ 2008中std的已知问题?

#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!
}

我正在使用vc ++ 2008 express sp1,所有更新都达到KB948127。我知道控制台需要更改代码页,但这甚至都没有编译。感谢。

2 个答案:

答案 0 :(得分:15)

您需要#include <string>。我不确定标准是什么,但我确信<iostream>不需要导出所有<string>,如果有的话。

[edit]至少cplusplus.com甚至不会将string列为<iostream>中声明的类型。不,这不是标准,我知道...... [/ edit]

答案 1 :(得分:0)

对于有此问题的用户,您可能需要在控制台中启用多字节打印。请在此处查看答案:https://stackoverflow.com/a/41584090/1599699

我的评论:

  

由于sizeof(wchar_t)== sizeof(char)* 2打印了一个我实例化的长度超过我提供的数据的wstring,然后打印了之后没有成功的东西