求一个C++程序,从一个含有中文和英文的文档中筛选出中文。谢!

从一个文档中读取所有的文字(有换行),然后将所有不是汉字的字符删掉,将所有的汉字存入一个新的文档。比如“advabasdf只要中文asdlkfjasd123123阿斯顿发... 从一个文档中读取所有的文字(有换行),然后将所有不是汉字的字符删掉,将所有的汉字存入一个新的文档。比如
“advabasdf只要中文asdlkfjasd123123
阿斯顿发adf含有换行“
把里面所有中文提取出来,存入新文档。
要C++程序!
谢谢!
展开
 我来答
百度网友29caa01d7
2011-07-07
知道答主
回答量:14
采纳率:0%
帮助的人:12.6万
展开全部
//程序已在 vc++6.0下运行过
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
char text_name[20];

cout<<"请输入要读取的文本文档的文件名(包括扩张名)\n";//输入你要读取的文本文件例如1.txt
cin>>text_name;
ifstream in(text_name);
cout<<"请指定保存汉字的文件名(包括扩展名)";//输入你要把汉字保存的文本文件名,例如2.txt
cin>>text_name;
ofstream out(text_name);

while(!in.eof())//读取文件中的字符直到文件结束
{
char c;
in>>c;
if(in.eof())//当读到最后一个字符直接退出,避免最后一个字符被独到要保存的文件中
break;
if(c<0||c>255)//我刚才测试了一些一般的汉字的字符值(转换成整形后都是非常大
//的,而我们所知道的字符包括你所说的换行灯一些字符值都介于0-255之间
//因此可以用这条判断语句舍去那些非汉字的字符)
out<<c;
}
//一下几行代码是从你保存的文件中读取汉字到控制台上,用来检验程序是否合理
in.close();//
out.close();//
ifstream in1(text_name);//

for(string s;getline(in1,s);)//
cout<<s<<endl;//

return 0;
}
//我刚才也百度了一下,没有区别字符与汉字的有效方法,所以鄙人想了一个大胆的方法,但此方法有很多局限性
//因为程序不能保证一些特别的字符(比如省略号等,但区分字符和数字以及换行号还是搓搓有余的)被误保存到文件中。
//最后希望我的程序对你有点用处,如果有什么更好的方法请分享一下……
追问
谢谢!不过有个问题,每次用out<<c;的时候,已经写进去的字符似乎被取代了,也就是说,写入的东西会覆盖原油内容。能改进吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式