C++统计给定文本中每个单词出现的次数并输出结果到文件

思路:将给定文件按行读入–>去除每行中出现的非字母字符–>以空格分隔读入每个单词–>统计单词出现的次数。

按行读入文件并保存到一个string中
	string tmp, strFile;
	ifstream file("1.txt");
	while (getline(file, tmp))
	{
		strFile.append(tmp);
		tmp.clear();
	}

这样做的结果是将文件中的所有行按顺序保存在了一个string中

去除非字母字符
for (size_t i = 0; i < strFile.length(); i++)
{
	if (ispunct(strFile[i]))
		strFile[i] = ' ';
}

将所有非字母字符以空格替代,这样使得输入文件中的单词间均已空格间隔

统计单词
stringstream ss(strFile);
string word;
while (ss >> word)
{
	number_of_words++;
	unordered_map<string, int>::iterator it = strMap.find(word);
	if (it == strMap.end())
		strMap.insert(unordered_map<string, int>::value_type(word, 1));
	else
		strMap[word]++;
}

首先使用stringstream从strFile中读取string,然后按空格间隔读取每个单词并统计:对于不存在的单词在unordered_map中增加一个键值对,存在则只增加计数。

结果写入文件
	freopen("out.t
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值