大家好,又见面了,我是你们的朋友全栈君。
C++ 流都很类似, 比如:输入输出流 就是cin cout 从控制台读入写出。
字符串流也类似,只是重定向到字符串。istringstream 是从字符串读, ostringstream是写到字符串中去,用法跟cin cout完全一样。
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>头文件。
istringstream类是从istream和stringstreambase派生而来,ostringstream是从ostream和 stringstreambase派生而来, stringstream则是从iostream类和stringstreambase派生而来。
他们的继承关系如下图所示:
istringstream是由一个string对象构造而来,用istringstream类从一个string对象读取字符。
#i nclude <iostream>
#i nclude <sstream>
using namespace std;
int main()
{
istringstream istr;
istr.str("1 56.7");
//上述两个过程可以简单写成 istringstream istr("1 56.7");
cout << istr.str()<<endl;
int a;
float b;
istr>>a; //输入
cout<<a<<endl;
istr>>b;
cout<<b<<endl;
}
输出
1 56.7
1
56.7
上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入”赋值”操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,str()成员函数的使用可以让istringstream对象返回一个string字符串。
ostringstream类向一个string插入字符。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
ostringstream ostr;
//ostr.str("abc");//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长
ostr.put('d');
ostr.put('e');
ostr<<"fg";
string gstr = ostr.str();
cout<<gstr;
}
输出:defg
在上例代码中,我们通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据。
对于stringstream是用于C++风格的字符串的输入输出的,不多说。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159726.html原文链接:https://javaforall.cn