C++处理中文字符遇到的问题

the_passenger 2016-09-17 10:55:33
#include<fstream>
#include<locale>
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
locale china("chs");
wcin.imbue(china);
wcout.imbue(china);
wfstream file;
file.imbue(china);
wstring str; //文件内容存到的目标字符串 str
wstring gstr; //临时变量,用来读入文件
file.open("Ci1.txt",ios::in|ios::out);
do{
str = str + gstr;
file>>gstr;
}
while(!file.eof());
file.close(); //关闭文件
wcout<<str<<endl;
}

程序可以通过编译器,但无法运行,显示:


请教这是什么问题。
还有,请问我这种读取中文文本TXT的方法科学吗?
有没有多快好省的方法
...全文
274 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
the_passenger 2016-09-25
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
除了eof还有很多其它不正常状态嘢!
http://www.cplusplus.com/reference/ios/ios/rdstate/


看不懂啊,老师!我现在用这个:
while(file>>gstr)
{
wcout<<gstr;
}
运行时还是遇到这个报错!编译可以通过。
我去网上百度了一下,发现这个:


和这个:http://blog.sina.com.cn/s/blog_81b27a5a0101gkqf.html

然后我看完之后还是不知道该怎么做。。这里说的好像是linux系统?
请指教
赵4老师 2016-09-18
  • 打赏
  • 举报
回复
除了eof还有很多其它不正常状态嘢! http://www.cplusplus.com/reference/ios/ios/rdstate/
the_passenger 2016-09-18
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
循环中为什么不判断file的状态呢?
有if(!file.eof())了呀
赵4老师 2016-09-18
  • 打赏
  • 举报
回复
循环中为什么不判断file的状态呢?
iyomumx 2016-09-17
  • 打赏
  • 举报
回复
locale 字符串由系统规定, Windows 下在 https://msdn.microsoft.com/en-us/library/hzz3tw78.aspx 可以查阅 完整读取一个文件通常不是一个好主意,不过你非要读的话,
std::string str(std::istream_iterator<char>(file), (std::istream_iterator<char>()));

64,646

社区成员

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

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