• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • C++风格的几种IO流

    C/C++ EXP 101阅读 0评论

    本文介绍的三个IO函数(stringstream、ostringstream、istringstream)均在头文件<sstream>中


    stringstream

    可以说 stringstream 是 ostringstream 和 istringstream 的综合体。

    因为在 ostringstream 和 istringstream 的一般用法中,凡是使用 ostringstream(或 istringstream)函数的地方,都可以用 stringstream 进行替换,因此不介绍 stringstream。


    ostringstream

    ostringstream 对象将所有“赋”给它的字符串整合成一个流存放,该流中各个字符串的排列顺序按照“赋值”时的顺序排列,当输出ostringstream对象时,该流被完整输出。

    ostringstream 对象中存放的流可以使用函数 .str(“”) 进行清空。养成好习惯,在程序允许的情况下在每次重新调用 ostringstream 对象时最好清空内存,避免流过长引致的奇怪问题。

    可以通过栈 Stack 理解 ostringstream 的这种功能

    1. 把各条零散的字符串存放到ostringstream对象里(字符串的数量、长度没有限制)
    2. ostringstream在内部对零散的字符串进行连续顺序的整合
    3. 把整合后的字符串流整体输出

    下面通过一个例子理解这个流程:

    第一次输出:

    第二次输出:


    上例其实就是一个格式化输出的例子,下面简单介绍ostringstream类型转换的功能:

    注:
    ostringstream 对象只支持 << 操作符,可以用来进行格式化的输出,并能够方便的将各种类型转换为string类型。


    istringstream

    istringstream对象只支持 >> 操作符,会对“赋”给它的字符串流进行空格识别,把该字符串中以空格隔开的内容分别提取出来,被提取的内容可以赋值给string等类型输出。

    istringstream对象中存放的流可以使用函数.str(“”)进行清空

    可以通过栈Stack理解istringstream的这种功能

    1. 把一条较长的字符串流赋值给istringstream对象(字符串长度没有限制)
    2. istringstream对象通过识别该字符串流中的空格,把该字符串流中以空格分隔的子字符串进行拆分,并按原来的顺序从栈顶到栈底进行连续存放
    3. istringstream对象由栈顶开始把逐个子字符串对外赋值,每前一个子字符串出栈后,指针指向下一个子字符串的串首
    4. istringstream对象的内存不一定要一次全部输出,允许只输出一部分,但内部指针的指向不会自动初始化。下一次调用istringstream对象赋值时将从中断处继续对外输出
    5. 当指针指向栈底时, istringstream对象不能再对外赋值,但仍然保存该字符串流的所有信息

    下面通过一个例子理解这个流程:


    资源下载

    本文全文下载


    转载请注明:EXP 技术分享博客 » C++风格的几种IO流

    喜欢 (0) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址