String streams 提供有缓冲区
String Streams 的基本操作
str() 将缓冲区内容当作一个string返回
str(string) 将string设为缓冲区内容
#include <cstdlib>
#include <sstream>
#include <string>
#include <iostream>
using namespace std;
int fun1()
{
ostringstream os; //The result is
for(int i = 0; i < 5;i ++) // "objEN0"
{ // "objEN1"
os<<"objEN"<<i; // "objEN2"
cout<<os.str()<<endl; // "objEN3"
os.seekp(0); // "objEN4"
}
return 0;
}
int fun2()
{
stringstream str;
str.put('a');
str<<"bc";
cout<<str.str()<<endl; //The result is "abc"
str.seekp(1);
str<<"de";
cout<<str.str()<<endl; //The result is "ade"
return 0;
}
int fun3()
{
int a;
istringstream is("123445");
is>>a;
cout<<"a = "<<a<<endl; //The result is 123445
return 0;
}
int fun4()
{
int x;
float y;
istringstream is;
is.str("3.7"); //initilize with a string
is>>x>>y; //Write data to x and y
cout<<"is.str() = "<<is.str()<<endl; //The result is 3.7
cout<<"x = "<<x<<endl; //The result is 3
cout<<"y = "<<y<<endl; //The result is 0.7
return 0;
}
1. istringstream类用于执行C++风格的串流的输入操作
stringstream类同时可以支持C++风格的串流的输入输出操作
istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,
ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,
stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来
2. istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
3. ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。
ostringstream的构造函数原形如下:
ostringstream::ostringstream(string str);
put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,
str()函数返回增长过后的完整字符串数据,
当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。