如何初始化和打印一个std :: wstring?
我有这样的代码:
std::string st = "SomeText"; ... std::cout << st;
这工作得很好。 但是现在我的团队想要转移 所以我试了一下:
std::wstring st = "SomeText"; ... std::cout << st;
但是这给了我一个编译错误:
错误1错误C2664:'std :: basic_string <_Elem,_Traits,_Ax> :: basic_string(const std :: basic_string <_Elem,_Traits,_Ax>&)':不能将参数1从'const char [8]'转换为'const std :: basic_string <_Elem,_Traits,_Ax>&'D:… \ TestModule1.cpp 28 1 TestModule1
在search网页后,我读到应该将其定义为:
std::wstring st = L"SomeText"; // Notice the "L" ... std::cout << st;
这编译但打印"0000000000012342"
而不是"SomeText"
。
我究竟做错了什么 ?
要显示一个string,你还需要一个宽版的cout – wcout。
std::wstring st = L"SomeText"; ... std::wcout << st;
使用std::wcout
而不是std::cout
。
尝试使用使用std::wcout<<st
它将解决您的问题。
std::wstring st = "SomeText"; ... std::wcout << st;
这个答案适用于“C ++ / CLI”标签和相关的Windows C ++控制台。
如果你在std :: wstring中有多个字节的字符,需要做两件事才能使它工作:
- 包含标题
#include <io.h>
#include <fcntl.h>
- 设置标准输出模式
_setmode(_fileno(stdout), _O_U16TEXT)
结果: