istringstream用法

解决问题单词数
要求:
1、去除重复的单词(STL中的set解决)
2、可能有多个连续的空格
解决多个连续的空格比较麻烦,但 也不是很难。可以利用istringstream解决,及其简单。
今天看别人c++源码,看到一个比较有用的c++输入输出控制类,特此记录下;
源码:

#include<iostream>
#include<set>
#include<sstream> //引入头文件
using namespace std;

int main(){
	string s;
	while(getline(cin,s) && s != "#"){
		istringstream sin(s);
		set<string> q;
		string w;
		
		while(sin>>w)
			q.insert(w);
		
		cout<<q.size()<<endl; 
	}
	
	return 0;
}

自己解决问题的代码;

#include<iostream>
#include<string>
#include<set>
using namespace std;

int main(){
	string s;
	
	while(getline(cin,s) && s[0] != '#'){
		set<string> q;
		string str;
		for(string::iterator it = s.begin(); it != s.end();++it){
			if(*it != ' ') str += *it;
			else{
				if(!str.empty())
					q.insert(str);
				str = "";
			}
		}
		if(!str.empty())
			q.insert(str);
		cout<<q.size()<<endl;
		q.clear();
	}
	
	return 0;
}

尽管都能AC,但第一个代码明显简介易懂。

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含这个头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。

istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。

istringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。

所以在处理有多个空格的字符串的时候特别好用。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值