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

对读入的某个文本文件input.txt中,拆出英文单词,输出一个按字典顺序排列的单词表,结果输出在文本文件output.txt中,每个单词一行,并在单词后输出该单词出现的... 对读入的某个文本文件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编译环境
展开
 我来答
狗牌82
2015-03-23 · 超过38用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:30.1万
展开全部
#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';

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式