C++中stringstream的使用方法和样例
之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。
介绍:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C风格的串流的输入输出操作。
下图详细描述了几种类之间的继承关系:
istringstream是由一个string对象构造而来,从一个string对象读取字符。
ostringstream同样是有一个string对象构造而来,向一个string对象插入字符。
stringstream则是用于C++风格的字符串的输入输出的。
#include <iostream> #include <sstream> using namespace std; int main(){ string str; getline(cin, str); stringstream ss(str); int i; while(ss >> i){ cout << i << " "; //只用全是数字的字符串中才能读出连续的数字 } cout << endl; getline(cin, str); stringstream s2(str); float f; while(s2 >> f){ cout << f << " "; //只用全是数字的字符串中才能读出连续的数字 } cout << endl; getline(cin, str); stringstream s3(str); string s; while(s3 >> s){ cout << s << " "; //任意字符,因为任意字符都是字符串,以空格隔开,所以用于求单词的题目很简单 } cout << endl; return 0; } /* 输入: 1 2 3 4 5.5 6.6 输出: 1 2 3 4 5 输入: 1 2 3 4 5.5 6.6 a 7 输出: 1 2 3 4 5.5 6.6 输入: a b c d 12 dd 输出: a b c d 12 dd */