c++读取文件里的汉字,并开展匹配

c++读取文件里的汉字,并进行匹配
本帖最后由 hello619 于 2014-02-28 22:47:06 编辑
在做一个词频统计的程序,想读入.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);

------解决方案--------------------
引用:
在做一个词频统计的程序,想读入.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);