C++ Primer 中文版 第4版 习题10.9

本文介绍了一个使用C++实现的单词查询程序,该程序能够统计指定文件中特定单词出现的次数,并通过命令行参数接收查询单词及文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*我在这里写下部分C++ Primer 中文版 第4版 习题的个人解答和看法(注:我没有买答案书,所以不保证正确,你觉得错的,希望你能告诉我)源代码运行的要求和书上一样,省略了预编译和using行。假如有什么说的不详细,你还不懂,可以问我,不过我也是初学者,不一定知道阿,看我还在学C++ Prime 就知道我是初学者了。欢迎转载,但是请保留作者名“九天雁翎”。*/

//一个单词查询程序,就算不是做题目,实际的代码在使用上也有一定的意义

int main(int argc, char *argv[])//agrv[1]为要查询单词,agrv[2]为查询文件
{
if(argc!=3)//检查参数数目
{
cerr<<"error:wrong argment number.First was the word,second the file name.";
return -1;
}
ifstream ifile;
ifile.open(argv[2]);
if(!ifile)//检查文件打开情况
{
cerr <<"error:unable to open input file: "<<argv[2]<<endl;
return -1;
}
string line,word;
map<string,int> wordCount;
while(getline(ifile,line))
{
istringstream isstream(line);
while(isstream >>word)//读入每个单词
{
++wordCount[word];
//T10.12的形式就是把上面一句注释掉,把下面的注释去掉,当然是第一种方便
/*pair<map<string,int>::iterator,bool> ret =
wordCount.insert(make_pair(word,1));
if(!ret.second)
++ret.first->second;*/
}
}
ifile.close();
cout<<"the "<<argv[1]<<" occor "<<wordCount[argv[1]]
<< ( (wordCount[argv[1]] > 1 ) ? " times" : " time" ); //输出,最后用一个?:操作来输出正确的复数形式
return 0;
}
//最后这个程序的问题在于单词的统计使用了C++ Primer书中提供的常用方法,完全按空格区分,没
//有办法区分数字,标点等对单词的影响,暂时还想不到简单的办法,思路都很复杂,要应对各样的
//情况,比如光查标点会让It's等缩写产生问题,有知道方法的,请留言告诉我啊:)就我所知,就
//算是C++ Primer书中提供的一个TextQuery程序(10.6.3)也存在同样的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值