C++中的istringstream 的用法
今天看到了一个比较有用的c++的输入输出控制类。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 an a boy";
- istringstream is(str);
- string s;
- while(is>>s)
- {
- cout<<s<<endl;
- }
-
- }
输出是:
i
an
a
boy
HDU 2070
我的复杂代码是:
- #include<iostream>
- #include<set>
- #include<string>
- using namespace std;
- int main()
- {
- set<string> se;
- string tempstr,str;
- while (getline(cin,str) && str != "#")
- {
- se.clear();
- for (int i = 0; i < str.length(); i++)
- {
- if(str[i] == ' ')
- {
- if(tempstr != "")se.insert(tempstr);
- tempstr = "";
- }
- else
- {
- tempstr += str[i];
- }
- }
- if(tempstr != "")se.insert(tempstr);
- cout<<se.size()<<endl;
- }
- return 0;
- }
简短代码是:
- #include<iostream>
- #include<string>
- #include<set>
- #include<sstream>
- using namespace std;
- int main()
- {
- string str,w;
- set<string>se;
- while(getline(cin,str) && str != "#")
- {
- se.clear();
- istringstream is(str);
- while (is>>w)
- se.insert(w);
- cout<<se.size()<<endl;
- }
- return 0;
- }