尝试在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。我知道控制台需要更改代码页,但这甚至都没有编译。感谢。
答案 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,然后打印了之后没有成功的东西