linux下C++写数据出现中文乱码

anchor_lin 2018-08-17 04:33:40
我今天在C++的fstream向一个文件写内容,写完以后打开文件中文乱码,是在Linux下的程序,怎么能在写入的时候指定文件的编码啊
...全文
753 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shwill123 2018-08-29
  • 打赏
  • 举报
回复
2# 正确,在编辑器里指定编码就能看了,我之前也碰到类似的问题
smwhotjay 2018-08-17
  • 打赏
  • 举报
回复
linux 下看文件,应该是中文才对,printf输出文件数据看看。
  • 打赏
  • 举报
回复
Linux下默认是UTF-8的。估计要在编辑器里指定编码就能看了。
赵4老师 2018-08-17
  • 打赏
  • 举报
回复
仅供参考:
#pragma warning(disable:4786)
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main () {
wstring ws1,ws2;

wcin.imbue(locale("chs"));
wcout.imbue(locale("chs"));
getline(wcin,ws1);
getline(wcin,ws2);
if (ws1.size()!=ws2.size()) {
wcout<<ws1<<L" 和 "<<ws2<<L" 不对应"<<endl;
return 1;
}

map<wchar_t,wchar_t> m1,m2;
int n=ws1.size();

for (int i=0;i<n;i++) {
if (m1.find(ws1[i])==m1.end() && m2.find(ws2[i])==m2.end()) {
m1[ws1[i]]=ws2[i];
m2[ws2[i]]=ws1[i];
} else {
if (m1[ws1[i]]!=ws2[i] || m2[ws2[i]]!=ws1[i]) {
wcout<<ws1<<L" 和 "<<ws2<<L" 不对应"<<endl;
return 1;
}
}
}
wcout<<ws1<<L" 和 "<<ws2<<L" 对应"<<endl;
return 0;
}

64,666

社区成员

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

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