永发信息网

对读入.txt中,拆出英文单词,输出顺序排列的单词表 ,输出output.txt中,一个一行,单词后后为出现个数

答案:2  悬赏:30  手机版
解决时间 2021-02-07 21:15
  • 提问者网友:情歌越听越心酸
  • 2021-02-07 16:25
对读入的某个文本文件input.txt中,拆出英文单词,输出一个按字典顺序排列的单词表
,结果输出在文本文件output.txt中,每个单词一行,并在单词后输出该单词出现的个数
,两个字段之间用逗号分隔。约定单词仅由英文字母组成,单词间由非英文字母分隔,
相同单词只输出一个,大小写不区分。
例如文本文件input.txt为:
i am a boy.
she is a girl.
则输出文本文件output.txt为:
a,2
boy,1
girl,1
i,1
she,1
使用linux下的gcc编译环境
最佳答案
  • 五星知识达人网友:迟山
  • 2021-02-07 17:52
我这儿有,要的话发邮箱。
全部回答
  • 1楼网友:迟山
  • 2021-02-07 18:34
#include <iostream> #include <map> #include <string> #include <sstream> using namespace std; int main() { string input_s = "i am a boy.\n she is a girl."; string word; map<string,int> freq; string s; while(getline(input_s,s)) { for ( std::string::iterator it=s.begin(); it!=s.end(); ++it) { if(*it == ' ') { if(freq.find(word) == freq.end()) //First time the word is seen { freq[word] = 1; } else //The word has been seen before { freq[word]++; } word = ""; } else { word.push_back(*it); } } } for (std::map<string,int>::iterator it=freq.begin(); it!=freq.end(); ++it) std::cout << it->first << " => " << it->second << '\n'; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯