徐州建站服务,网站 策划,简单公司网站,网站建设 自查表istringstream类
istringstream本质不是类#xff0c;是一个宏#xff0c;或者说是一个流#xff1a;
typedef basic_istringstreamchar istringstream;istringstream从basic_istringstream的char专用项而来。这一部分让人看得摸不着头脑的原因是因为大量使用了st…istringstream类
istringstream本质不是类是一个宏或者说是一个流
typedef basic_istringstreamchar istringstream;istringstream从basic_istringstream的char专用项而来。这一部分让人看得摸不着头脑的原因是因为大量使用了stream的语法如果有像我一样的新手的话强烈建议去找CPrimerPlus去看看里面讲。
援引自笔者一个朋友大佬的原话是这样的 istringstream是一个宏通过typedef展开到basic_istringstream。
这个basic_istringstream继承自basic_istream并重载了operator运算符。
template class Elem, class Tr char_traitsElem, class Alloc allocatorElem
class basic_istringstream : public basic_istreamElem, Tr可以看到确实是继承自basic_istream类且basic_istream类中也确实有基础运算符。这解释了为什么这个对象可以像流一样用。
iostream比较像一个黑箱里边包装了文件或字符串操作。具体来说(i/o/)fstream封装了文件操作(i/o/)stringstream封装了字符串操作他们一起抽象为(i/o/io)stream。
istringstream类支持操作ostringstream类支持操作stringstream类支持和操作。
通过这样流对象的构造函数我们可以写入或写出一些东西。
basic_istringstream(basic_istringstream right);初始化并加载right值作为一种流。
案例
#include iostream
#include sstream
using namespace std;int main()
{istringstream is(I am\tlove C\nand I love C);string str;//默认是空格或者回车符或者tab会输出如下内容I am love C and I love Cwhile (is str) {cout str endl;}getchar();return 0;
}结果
I
am
love
C
and
I
love
C空格或者\会作为流的分界符一个一个输出。