Roe*_*rel 51 c++ c++-cli wstring
我有代码:
std::string st = "SomeText";
...
std::cout << st;
Run Code Online (Sandbox Code Playgroud)
这工作得很好.但现在我的团队想要搬到wstring.所以我尝试过:
std::wstring st = "SomeText";
...
std::cout << st;
Run Code Online (Sandbox Code Playgroud)
但这给了我一个编译错误:
错误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
在搜索网络后,我读到我应该将其定义为:
std::wstring st = L"SomeText"; // Notice the "L"
...
std::cout << st;
Run Code Online (Sandbox Code Playgroud)
这个编译但打印"0000000000012342"而不是"SomeText".
我究竟做错了什么 ?
Bo *_*son 88
要显示一个wstring,你还需要一个宽版本的cout - wcout.
std::wstring st = L"SomeText";
...
std::wcout << st;
Run Code Online (Sandbox Code Playgroud)
此答案适用于"C++/CLI"标记以及相关的Windows C++控制台.
如果你在std :: wstring中有多字节字符,还需要做两件事才能使它工作:
#include <io.h>
#include <fcntl.h>_setmode(_fileno(stdout), _O_U16TEXT)尝试使用 std::wcout<<st它会解决你的问题.
std::wstring st = "SomeText";
...
std::wcout << st;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61217 次 |
| 最近记录: |