c++primer 练习11.9 (读取一行字符串,然后从字符串中提取单词)

本文介绍了一个使用C++进行文本处理的程序,该程序通过读取文本文件,统计并输出每个单词的出现频率及其所在行号,利用了istringstream、map和list等STL容器,展示了C++在文本分析方面的应用。
#include "pch.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <list>
#include <iterator>
#include <map>
#include <set>
#include <sstream>
using namespace std;



int main(int argc,char **argv) {
	//list<int> lineNO;
	string line;
	ifstream in("ss.txt");
	int count = 0;
	map< string, list<int>> imap;
	while (getline(in, line)) {//读取一行
		++count;
		istringstream ss(line);//将一行字符串转换成流
		string word;
		while (ss >> word) {
			imap[word].push_back(count);//统计出现的行号
		}
	}
	for (auto i : imap) {
		cout << i.first << " occurs " << i.second.size() << (i.second.size() > 1 ? " times" : " time") << ". the line NO is : ";
		ostream_iterator<int> out_iter(cout, " ");//输出出现的行号
		copy(i.second.cbegin(), i.second.cend(), out_iter);
		cout << endl;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值