缘起

#include <iostream>
#include <sstream>
using namespace std;
int main()
{
istringstream iss;
string str1, str2, str3, str4, str5, str6;
iss.str("I love you");
iss >> str1 >> str2 >> str3;
cout << str1 << " " << str2 << " "<< str3 << endl;
iss.str("I hate you");
iss >> str4 >> str5 >> str6;
cout << str4 << " " << str5 << " "<< str6 << endl;
}

期待输出

可以结果是

问题

没有输出“I  hate you"。究竟是什么原因导致 流没有输出到字符串中?

一番折腾知道,此时流的eof为1(已经达到结束符),此时必须用函数clear()把所有的状态值设为有效状态值。经过修改程序如下:

#include <iostream>
#include <sstream>
using namespace std;
int main()
{
istringstream iss;
string str1, str2, str3, str4, str5, str6;
iss.str("I love you");
cout << "before" << iss.str() << endl;
iss >> str1 >> str2 >> str3;
cout << str1 << " " << str2 << " "<< str3 << endl; cout << "eofbit:" << iss.eof() << endl;
iss.clear();
cout << "eofbit:" << iss.eof() << endl; iss.str("I hate you");
cout << "after:" << iss.str() << endl;
iss >> str4 >> str5 >> str6;
cout << str4 << " " << str5 << " "<< str6 << endl;
}

正确结果

程序用到知识

【c++】字符串流输出恢复状态问题的更多相关文章

  1. Java中的字符串流的读取和写入(创建文件并判断重复账户)

    各位我又来了!!哎!好心酸!我还没注册到三天!!没法登上博客的首页!!心累!! import java.io.BufferedOutputStream; import java.io.Buffered ...

  2. DirectX11 With Windows SDK--16 流输出阶段

    前言 在上一章,我们知道了如何使用几何着色器来重新组装图元,比如从一个三角形分裂成三个三角形.但是为了实现更高阶的分形,我们必须要从几何着色器拿到输出的顶点.这里我们可以使用可选的流输出阶段来拿到顶点 ...

  3. ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据

    在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...

  4. 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作

    一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...

  5. C语言风格字符串的概念、定义、输入字符串、输出字符串

    字符串: C语言中最有用.最重要的数据类型之一. 字符串:是以\0字符结尾的char类型数组.所以可以把数组和指针知识应用于字符串. 如何在程序定义字符串: 1.字符串字面量 用双引号括起来的内容称为 ...

  6. 字符串流stringstream(头文件sstream)

    今天看到一样很有趣的东西,可以用于各种类型的转换.其实一个文本可以看作一个长长的字符串,整数啊浮点数的都是字符串,于是在字符串流里面就可以很方便地玩转各种类型,比如说: #include<ios ...

  7. C++学习50 对字符串流的读写

    文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据 ...

  8. 字符串流sstream[part1/基本知识]

    C++中的输入输出分为三种:基于控制台的I/O,即istream.ostream.iostream:基于文件的I/O,即ifstream.ofstream.fstream:基于字符串的I/O,即ist ...

  9. c++ 控制台流和字符串流

    前言 上一章节简单介绍c++中关于流的概念,这两章节将重点讲解如何使用,本章讲解控制台流和字符串流. 控制台输出流 输出流定义在头文件中,使用输出流最简单的方法就是 使用<<运算符.通过你 ...

随机推荐

  1. Visual Studio Code Angular4 配置环境

    首先在本机安装node.js才能用 npm 命令 环境搭建 安装node.jsnpm install -g @angular/cli 安装第三方库npm install --save bootstra ...

  2. asp.net——正则表达式

    在平时的开发中常常用到替换法:  普通的字符串替换可以使用string.replace(string,string),但是比较难解决HTML文本的替换. 经我几番查找,终也找出解决办法:正则匹配替换. ...

  3. Android Dialog 的一些特性

    1. Dialog 与 AlertDialog 的区别. AlertDialog 是一种特殊形式的 Dialog.这个类中,我们可以添加一个,两个或者三个按钮,可以设置标题.所以,当我们想使用 Ale ...

  4. Ceph 的基础数据结构 [Pool, Image, Snapshot, Clone]

    原文链接:http://www.cnblogs.com/sammyliu/p/4843812.html?utm_source=tuicool&utm_medium=referral 1 Poo ...

  5. Android 音视频开发入门指南

    Android 音视频从入门到提高 —— 任务列表 http://blog.51cto.com/ticktick/1956269(以这个学习为基础往下面去学习) Android 音视频开发学习思路-- ...

  6. 【Oracle 12c】最新CUUG OCP-071考试题库(53题)

    53.(12-14) choose the best answer: Examine the command to create the BOOKS table. SQL>CREATE TABL ...

  7. zTree第二章,各种常见setting设置和方法

    具体详见API文档: http://www.treejs.cn/v3/api.php --------------------------------------------------------- ...

  8. HI~

    我是一只来自青岛某鶸校的蒟蒻,很高兴能认识各位,本人水平有限,文章中的不足之处,希望大家不吝赐教 我的邮箱是zhenshiluosuo@gmail.com 微信clearsummerday 联系时烦请 ...

  9. IE 8-不支持 placeholder 解决方法

    ;!function fixPlaceholder() { var hasPlaceholder = 'placeholder' in document.createElement('input'); ...

  10. Android跳转淘宝、京东APP商品详情页

    import Android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; imp ...