100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C++ ifstream open 读取txt/json文件出现中文乱码的解决问题

C++ ifstream open 读取txt/json文件出现中文乱码的解决问题

时间:2018-11-04 07:30:43

相关推荐

C++ ifstream open 读取txt/json文件出现中文乱码的解决问题

C++ ifstream open 读取txt/json文件出现中文乱码的解决方法

作者:虚坏叔叔

博客:

早餐店不会开到晚上,想吃的人早就来了!😄

在编程中,我们经常需要对txt/json文件进行读写操作,有时候由于编解码问题,txt读写会出现乱码问题。下面介绍一种基于ofstreamifstream的txt文件读写方法,并介绍txt文件读写的乱码解决方案。

一、txt文件写入

#include <fstream>#include <iostream>using namespace std;int main(){ ofstream outfile("1.txt",ios::ate); //打开文件,设置写入方式为覆盖写入if(!outfile){cout<<"txt文件打开失败!"<<endl;exit(0);}outfile<<"写入txt文件示例.\n";outfile<<"成功写入.\n";outfile.close();}

txt里面的写入内容如下:

成功写入。

二、txt文件读出

对上面读入内容的txt进行读出操作,代码如下:

#include <fstream>#include <iostream>using namespace std;int main(){ char txt[100];ifstream infile;infile.open("1.txt");if(!infile.is_open()){cout<<"txt文件打开失败"<<endl;exit(0);}while(!infile.eof()){ infile.getline(txt,100);cout<<txt<<endl;}infile.close();getchar();}

读出结果为:

读出结果正确。

三、 txt读写乱码问题

有时候由于txt文件编码问题的不同,会导致读写的时候出现乱码,通常的txt编码方式有:

上面默认的编码方式为ANSI,如果我们现在将它另存为1.txt,但编码格式变为UTF-8,那么读出结果会变成:

发现结果完全错误,这时候我们需要编解码转换,具体代码如下:

#include <fstream>#include <iostream>#include <Windows.h>#include <string>using namespace std;string UTF8ToGB(const char* str){string result;WCHAR *strSrc;LPSTR szRes;//获得临时变量的大小int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);strSrc = new WCHAR[i+1];MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);//获得临时变量的大小i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);szRes = new CHAR[i+1];WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);result = szRes;delete []strSrc;delete []szRes;return result;}std::string readFile(std::string file){std::ifstream infile;infile.open(file.data()); //将文件流对象与文件连接起来 assert(infile.is_open()); //若失败,则输出错误消息,并终止程序运行 string s; string strAllLine;while (getline(infile, s)){string line = UTF8ToGB(s.c_str()).c_str();strAllLine += line;}infile.close(); //关闭文件输入流 return strAllLine;}int main(){ string msg =readFile(2.txt)getchar();}

四、总结

本文主要介绍读取中文文件乱码的问题。如果觉得文章对你有用处,记得点赞收藏转发一波哦~

💬 往期优质文章分享

C++ QT结合FFmpeg实战开发视频播放器-01环境的安装和项目部署解决QT问题:运行qmake:Project ERROR: Cannot run compiler ‘cl‘. Output:解决安装QT后MSVC 64bit配置无编译器和调试器问题Qt中的套件提示no complier set in kit和no debugger,出现黄色感叹号问题解决(MSVC)Python+selenium 自动化 - 实现自动导入、上传外部文件(不弹出windows窗口)

🚀 优质教程分享 🚀

🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!

🚀 资料白嫖,温馨提示🚀

关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。