我有代码:
std::string st = "SomeText";
...
std::cout << st;
并且工作正常。但是现在我的团队希望转移到wstring
。
所以我试过了:
std::wstring st = "SomeText";
...
std::cout << st;
但这给了我一个编译错误:
错误1错误C2664: “的std :: basic_string的&LT; _Elem,_Traits,_AX&GT; :: basic_string的(常量 的std :: basic_string的&LT; _Elem,_Traits,_AX&GT; &amp;)':无法转换参数1 从'const char [8]'到'const std :: basic_string&lt; _Elem,_Traits,_Ax&gt; &安培;” D:... \ TestModule1.cpp 28 1 TestModule1
在搜索网页后,我读到我应该将其定义为:
std::wstring st = L"SomeText"; // Notice the "L"
...
std::cout << st;
此编译但打印"0000000000012342"
而不是"SomeText"
。
我做错了什么?
答案 0 :(得分:79)
要显示一个wstring,你还需要一个宽版本的cout - wcout。
std::wstring st = L"SomeText";
...
std::wcout << st;
答案 1 :(得分:11)
使用std::wcout
代替std::cout
。
答案 2 :(得分:8)
此答案适用于“C ++ / CLI”标记以及相关的Windows C ++控制台。
如果你在std :: wstring中有多字节字符,还需要做两件事才能使它工作:
答案 3 :(得分:6)
尝试使用std::wcout<<st
它会解决您的问题。
std::wstring st = "SomeText";
...
std::wcout << st;