c++读取文件里的汉字,并开展匹配
c++读取文件里的汉字,并进行匹配
在做一个词频统计的程序,想读入.txt中的每个汉字(有标点符号什么的)并和预设的一些高频词汇进行匹配。
比如:文件中的内容是:“我啊哈哈,我啊”
程序中只想统计“我”这个字。
预期输出:
汉字总数:6
我:2
想问:1、文件读取的那些函数可以按行读取,或者以词为单位,不知道可否以字为单位,也就是说可否达到逐字输出(在文件内容为连续,不用每个词间都加空格的情况下)?
2、我记得以前学c++时需要按二进制方式读取,还得用指针什么的,不过忘了如何使用了,查c++primer也没找到相应介绍> < 。可否只用单纯文件操作的函数实现?谢谢!
粘一下我的代码吧。。
输出:
我啊哈哈,我啊
End of file reached!
count = 1
wo = 0
谢谢!
------解决方案--------------------
这个需要什么什么编码转换是不是 ,不能直接统计。
我也不知道,自己这么认为的。
------解决方案--------------------
看到C++这种输入输出方式,真他妈恶心
------解决方案--------------------
在做一个词频统计的程序,想读入.txt中的每个汉字(有标点符号什么的)并和预设的一些高频词汇进行匹配。
比如:文件中的内容是:“我啊哈哈,我啊”
程序中只想统计“我”这个字。
预期输出:
汉字总数:6
我:2
想问:1、文件读取的那些函数可以按行读取,或者以词为单位,不知道可否以字为单位,也就是说可否达到逐字输出(在文件内容为连续,不用每个词间都加空格的情况下)?
2、我记得以前学c++时需要按二进制方式读取,还得用指针什么的,不过忘了如何使用了,查c++primer也没找到相应介绍> < 。可否只用单纯文件操作的函数实现?谢谢!
粘一下我的代码吧。。
int main()
{
char filename[SIZE];
ifstream inFile;
inFile.close();
cout<<"Enter the path of the file: ";
cin.get(filename, SIZE);
inFile.open(filename);
if(!inFile.is_open()){
cout<<"Fail to open the file!"<<endl;
exit(EXIT_FAILURE);
}
string value;
//string value;
int count = 0;
int wo = 0;
inFile >> value;
while (inFile.good()){
++count;
cout<<value<<endl;
if(value=="我"){
wo++;
}
inFile >> value;
}
if (inFile.eof()) {
cout<<"End of file reached!"<<endl;
}
else if (inFile.fail()){
cout<<"Input terminated by data mismatched!"<<endl;
}
else{
cout<<"Input terminated for unknown reason!"<<endl;
}
if (count==0) {
cout<<"No data processed!"<<endl;
}
else{
cout<<"count = "<< count << endl;
cout<<"wo = "<< wo << endl;
}
inFile.close();
return 0;
}
输出:
我啊哈哈,我啊
End of file reached!
count = 1
wo = 0
谢谢!
------解决方案--------------------
这个需要什么什么编码转换是不是 ,不能直接统计。
我也不知道,自己这么认为的。
------解决方案--------------------
看到C++这种输入输出方式,真他妈恶心
FILE *fp=fopen("E:\\A.TXT","rb");
if(fp==NULL)
{
printf("文件不存在\n");
return;
}
unsigned char ch[2]={0};
unsigned char tmp[]="我";
int Acount=0;
int Scount=0;
while(1)
{
if((ch[0]>0xa0)&&(ch[1]>0xa0))
{
Acount++;
if((ch[0]==tmp[0])&&(ch[1]==tmp[1]))
Scount++;
ch[0]=0;
ch[1]=0;
}
else
{
ch[0]=ch[1];
ch[1]=fgetc(fp);
if(feof(fp)) break;
}
}
printf("汉字总数:%d\n",Acount);
printf("我字个数:%d\n",Scount);
fclose(fp);
------解决方案--------------------