wstring的用法

为什么在vs2017下使用wstring出来的汉字总是乱码?例如:
#include<iostream>
#include<locale.h>

using namespace std;

int main()
{
wcout.imbue(locale("chs"));
wstring wStr = L"经验";
wcout << wStr[1] << endl;
system("pause");
return 0;
}
...全文
1678 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你要看你的文件的编码是unicode还是ANSI,使用ANSI的话使用L,但是使用Unicode的话使用_T()或者TEXT就行的
东契奇 2019-07-19
  • 打赏
  • 举报
回复
看看是不是选择了unicode字符集,需不需要转成multibyte,试试_T宏
欲儿 2019-07-16
  • 打赏
  • 举报
回复
是编码问题其实很简单 #include <windows.h> void change() { system("chcp 65001"); } 就OK了,刚才手残不小心点了发送。这次是完整的了
欲儿 2019-07-16
  • 打赏
  • 举报
回复
是编码问题其实很简单 #include <windows.h> void change() {
  • 打赏
  • 举报
回复
少贴了一张图
  • 打赏
  • 举报
回复

[/quote]

看到这个提示,确定明显是源文件的编码问题了。打开源文件,点击菜单栏“文件”->“另存为”然后看另存为对话框,注意设置。
[/quote]




......我不知道怎么办了......
  • 打赏
  • 举报
回复
引用 5 楼 ⁽⁽◝( ˙ ꒳ ˙ )◜⁾⁾so wh 的回复:
其实你开始的代码里面有了设定,应当是可以了的。 即使不用我的那句按道理也是可以的。 现在猜测应当是编译器的设置引起的。比如编译设定的字符集不是unicode之类的问题。 不知道你用的是什么编译器?[/quote] zjq9931 是图片中这样吗?我用的是vs2017,应该在哪里设置?[/quote] 看到这个提示,确定明显是源文件的编码问题了。打开源文件,点击菜单栏“文件”->“另存为”然后看另存为对话框,注意设置。
  • 打赏
  • 举报
回复
引用 2 楼 ⁽⁽◝( ˙ ꒳ ˙ )◜⁾⁾so wh 的回复:
是这样吗?楼上 #include<iostream> #include<locale.h> using namespace std; int main() { wcout.imbue(locale("chs")); wstring wStr = L"经验"; setlocale(LC_ALL, ".ACP"); wcout << wStr[1] << endl; system("pause"); return 0; } 这样还是不行啊?
其实你开始的代码里面有了设定,应当是可以了的。 即使不用我的那句按道理也是可以的。 现在猜测应当是编译器的设置引起的。比如编译设定的字符集不是unicode之类的问题。 不知道你用的是什么编译器?
棉猴 2019-01-30
  • 打赏
  • 举报
回复
VS2015可以显示
  • 打赏
  • 举报
回复
是这样吗?楼上
#include<iostream>
#include<locale.h>

using namespace std;

int main()
{
wcout.imbue(locale("chs"));
wstring wStr = L"经验";

setlocale(LC_ALL, ".ACP");
wcout << wStr[1] << endl;
system("pause");
return 0;
}


这样还是不行啊?
  • 打赏
  • 举报
回复
用wstring可以操作Unicode。 用wcout可以输出。 如果想用wcout输出汉字,需要在输出之前调用c标准库函数 setlocale(LC_ALL, ".ACP");
  • 打赏
  • 举报
回复
[/quote]
其实你开始的代码里面有了设定,应当是可以了的。
即使不用我的那句按道理也是可以的。
现在猜测应当是编译器的设置引起的。比如编译设定的字符集不是unicode之类的问题。
不知道你用的是什么编译器?[/quote]

zjq9931


是图片中这样吗?我用的是vs2017,应该在哪里设置?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧