这里先上代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include <set>
#include <string>
#include <sstream>
#define clear(n,m) memset(n,m,sizeof(n))
#define ll long long
using namespace std;
int main()
{
string art;
while (getline(cin, art) && art != "#")
{
istringstream stream(art);
string word;
set<string> map;
while (stream >> word)
{
map.insert(word);
}
cout << map.size() << endl;
}
return 0;
}
然后大家肯定都注意到了有个istringstream挺陌生,这里着重介绍一下:
istringstream对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream这个头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C++风格的串流的输出操作。
strstream类同时可以支持C++风格的串流的输入输出操作。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。
代码示例:
#include<iostream>
#include<sstream> //istringstream 必须包含这个头文件
#include<string>
using namespace std;
int main()
{
string str="i am a boy";
istringstream is(str);
string s;
while(is>>s)
{
cout<<s<<endl;
}
return 0;
}
输出是:
i
am
a
boy