AI智能
改变未来

字符串流sstream,及输入输出流iostream的学习


iostream库 包含了以下三个标准流对象

istream类对象,包含了cin标准输入(standard input)
ostream类对象,包含了cout标准输出 (stand output)
osttream类对象,包含了cerr标准错误 (stand error)

在C++中有两种字符串流,也称为数组I/O流,其中一种在sstream中定义 另一种在strstream中定义。两者实现的功能基本一致

其中
strstream里包含
class strstreambuf;
class isstream;
class ostream;
class strstream;
它们是基于C语言类型字符串char*编写的。

sstream非常重要的一个头文件系列

sstream库中定义了三种类istringstream、ostringstream、stringstream
分别用来进行流的(输入)、(输出)、和 (输入/输出)操作

sstream中还包含了
class istringstream;
class ostringstream;
class stringstream;
class stringbuf;
class ……
它们是基于std::string编写的。//因此这个得在using namespace std;命名空间中
所以ostream::str()返回的是char*类型的字符串,
而ostringstream::str()返回的是std::string类型的字符串.

注意在使用的时候要注意两者的区别,一般情况下建议使用std::string类型的字符串。
为了保持和C的兼容,使用strstream也还可以。
but,记住,strstream虽然是C++语言标准的一部分,但已被C++宣称为\”deprecated\”,即不提倡使用了,
故想导入strstream可能得设定具体环境

所以一般直接通过stringstream来实例化对象

**

示例1:istringstream 字符输入流的学习实例

**

#include<iostream>#include<string>#include<sstream>using namespace std;int main(){//以空格为边界符,输入流string line=\"L N T U\";	//首先定义一个字符串char a,b,c,d;istringstream sin(line);	//istringstream为输入流sin>>a>>b>>c>>d;cout<<a<<\" \"<<b<<\" \"<<c<<\" \"<<d<<endl; 	//输出了L N T U,其中a,b,c,d都被输入赋值了//字符串赋值类似如此//若要输入一串字符且以enter标志为结束呢string str1;istringstream sin2(line);getline(sin2,str1);	//输入一串字符以enter标志输入结束cout<<str1<<endl; 	//同样输出了L N T U,而非单一\"L\"return 0;}

**

示例2:ostringstream的用法

**

#include<iostream>#include<string>#include<sstream>using namespace std;int main(){string s=\"test\";int i=2019126;ostringstream sout;sout<<s<<\" \"<<i;cout<<sout.str()<<endl;		//连接成了 test 2019126,所以输出的即为test 2019126return 0;}

**

示例3:简便写法

**

#include<iostream>#include<string>#include<sstream>using namespace std;int main(){string str=\"test\";char a,b,c,d;int i=2019126;stringstream ss(str);	//流初始为str字符串ss>>a>>b>>c>>d;			//将流内字符串赋值给a,b,c,d注:复制完后流内字符串相当于是给了当前字符串,流字符串会减少cout<<a<<\" \"<<b<<\" \"<<c<<\" \"<<d<<endl;		//输出了t e s tss<<str<<\" \"<<i;			//str加空格和i输出到ss流中cout<<ss.str()<<endl;		//连接成了 test 2019126,所以输出的即为test 2019126return 0;}

转载请标明出处,喜欢代码可以关注我一起学习Y

  • 点赞
  • 收藏
  • 分享
  • 文章举报

think-weige发布了9 篇原创文章 · 获赞 2 · 访问量 438私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 字符串流sstream,及输入输出流iostream的学习