包含三类:istringstream,ostringstream, stringstream分别对应输入,输出,输入和输出操作
很强大的一个功能就是可以自动推导变量的类型
The istringstream type reads a string, ostringstream writes a string, and stringstream reads and writes the string.
##istringstream
特性是::**对象用于输入一行字符串,以 空格 为分隔符把该行分隔开来 **
这里的流操作符和cin cout一样都不考虑变量的类型,可以直接从流中提取出来,转化到对应的变量类型中去
举例如下:这里是 将字符串类型的112转化成double 类型的数字
string str;
str = "112";
int pos = str.find_first_not_of("0123456789");
if (pos == -1)
{
double x;
istringstream s(str);
s >> x;
cout << x + 1 << endl;
}
利用这一特性可以处理未知长度的含有空格的字符串
例如将一句英语逆序输出
#include<iostream>
#include<cstdio>
#include<sstream>
#include<stack>
using namespace std;
int main()
{
string str = "fight for my family against the odds";
string tmp;
istringstream sstr(str);
stack<string> s;
while (sstr >> tmp)
{
s.push(tmp);
}
while (!s.empty())
{
cout << s.top();
s.pop();
if (s.size() != 0)
cout << ' ';
}
cout << endl;
return 0;
}
##ostringstream
ostringstream String stream that writes to a given string
##stringstream
** 基本数据类型的转化举例::int 转成string **
** 多次进行转换时必须将stringstream函数清空clear() **
流清空有两个函数,一个是clear(),一个是赋值成为空
但是clear()只是起到标志作用,只有s.str("");才是真正的清空流内容,否则内存一直被消耗
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
int a = 1111;
string str;
stringstream s;
s << a; //将int 输入流
s >> str; //从流中抽取插入的int
cout << str << endl; //输出
//多次进行转换时必须将stringstream函数清空clear()
s.clear();
s.srt("");
s << "123";
s >> str;
cout << str << endl;
return 0;
}
清空输出
不清空输出