缘起

#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. kubernetes yaml

    apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Deployment #指定创建资源的角色/类型 metadata: #资源的元数据/属性 ...

  2. 45 Useful JavaScript Tips, Tricks and Best Practices

    <45 Useful JavaScript Tips, Tricks and Best Practices> http://flippinawesome.org/2013/12/23/45 ...

  3. 描述一下 cookies,sessionStorage 和 localStorage 的区别?

    sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...

  4. php如何进行多进程与异步调用方法

    浏览器和服务器之间只一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求输出相应的程序,不能保持持久连接. 这样就出现了一个问题,一个客户端的相应服务端可能 ...

  5. Termux中安装gcc-7/gfortran-7实操过程,安装成功可以编译Fortran,c/c++

    最近计算材料学的老师需要我们运行Fortran,又不想带电脑去教室.所以想起Termux了,于是就试试看这个宝贝能不能帮我的忙, 但是经过测试以后发现,clang只能编译c/c++那一类语言,不能编译 ...

  6. pkuwc 前的任务计划

    菜鸡 wxw 的计划(肯定会咕咕咕 12.27 luogu P4244 [SHOI2008]仙人掌图 II(咕咕咕 luogu P4246 [SHOI2008]堵塞的交通 (没有咕! luogu P1 ...

  7. by python3-XSStrike 测试XSS

    一.概述: XSStrike是一个Cross Site Scripting检测套件,配备四个手写解析器,一个智能有效载荷生成器,一个强大的模糊引擎和一个非常快速的爬虫. XSStrike不是像其他工具 ...

  8. sqli-labs lession 5 之盲注型SQL入门

    本文作者:Mochazz 如果所查询的用户id在数据库中,可以发现页面显示”You are in”,而不像前4关那样会显示出具体的账号密码. 如果sql语句查询结果不存在,则不会显示”You are ...

  9. 总结day04 ---- 列表的切片,增删改查,以及,相关方法, 元祖的使用方法

    内容大纲 1 : 列表的索引 : 列表的切片 2 : 列表的增加内容 >1:append(char)  >2:insert(index,char) >3:extend('可迭代对象' ...

  10. python --爬虫基础 --爬猫眼top 100 使用 requests 库的基本操作

    import requests import re import json import time def get_page(url): # 获取页数 headers = { 'User-Agent' ...