【c++】字符串流输出恢复状态问题
缘起
#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++】字符串流输出恢复状态问题的更多相关文章
- Java中的字符串流的读取和写入(创建文件并判断重复账户)
各位我又来了!!哎!好心酸!我还没注册到三天!!没法登上博客的首页!!心累!! import java.io.BufferedOutputStream; import java.io.Buffered ...
- DirectX11 With Windows SDK--16 流输出阶段
前言 在上一章,我们知道了如何使用几何着色器来重新组装图元,比如从一个三角形分裂成三个三角形.但是为了实现更高阶的分形,我们必须要从几何着色器拿到输出的顶点.这里我们可以使用可选的流输出阶段来拿到顶点 ...
- ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据
在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...
- 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...
- C语言风格字符串的概念、定义、输入字符串、输出字符串
字符串: C语言中最有用.最重要的数据类型之一. 字符串:是以\0字符结尾的char类型数组.所以可以把数组和指针知识应用于字符串. 如何在程序定义字符串: 1.字符串字面量 用双引号括起来的内容称为 ...
- 字符串流stringstream(头文件sstream)
今天看到一样很有趣的东西,可以用于各种类型的转换.其实一个文本可以看作一个长长的字符串,整数啊浮点数的都是字符串,于是在字符串流里面就可以很方便地玩转各种类型,比如说: #include<ios ...
- C++学习50 对字符串流的读写
文件流是以外存文件为输入输出对象的数据流,字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组(字符串)为输入输出的对象,即将数据输出到内存中的字符数组,或者从字符数组(字符串)将数据 ...
- 字符串流sstream[part1/基本知识]
C++中的输入输出分为三种:基于控制台的I/O,即istream.ostream.iostream:基于文件的I/O,即ifstream.ofstream.fstream:基于字符串的I/O,即ist ...
- c++ 控制台流和字符串流
前言 上一章节简单介绍c++中关于流的概念,这两章节将重点讲解如何使用,本章讲解控制台流和字符串流. 控制台输出流 输出流定义在头文件中,使用输出流最简单的方法就是 使用<<运算符.通过你 ...
随机推荐
- C++的一些知识点摘抄(创建基本类 高级类)
问:对象有多大? 答:对象占据的内存量取决于其成员变量的长度,类函数不占据为对象分配的内容. 有些编译器在内存中对齐变量,这导致2字节变量实际占用的内存多于2字节. 问:为何不应将所有成员数据声明为公 ...
- WP8.1StoreApp(WP8.1RT)---发送邮件和短信
在WP7/8中,发送短信是利用了EmailComposeTask和SmsComposeTask来实现的. 在WP8.1 Store App中,原来的方式已经失效,采用了新的方法:ChatMessage ...
- columns数组形式展示不同列数据
function workList() { var status = $("#status1").val(); if (null == status || status == &q ...
- 实验了一下LitSphere做车漆
前阵子跟人聊天,聊起过去试验的车漆,不适合做到移动设备上.过去试验的车漆在此http://www.cnblogs.com/sitt/archive/2012/03/28/2420595.html 于是 ...
- 【总结】 NOIp2018考时经历记
可能我因为比较菜的原因,还是要写一下这个东西! 发布时间迟与更新时间,毕竟浙江选手为先例 那么希望NOIp8102RP++!!! 突然发现博客园支持更新创作时间了,那么就不咕了! 本次NOIp感受很深 ...
- SpringMvc-ModelAndView 结果出不来 显示路径问题 解决办法
今天写SpringMVC的时候 写ModelAndView的时候 死活跳不过页面去-一直报错 显示路径也错误 查看导包问题 应该: import org.springframework.web.se ...
- 学习笔记|Java 教程|菜鸟教程
一.Java 教程 1.Java 教程 Java 在线工具 JDK 1.6 在线中文手册 我的第一个 JAVA 程序 创建文件 HelloWorld.java(文件名需与类名一致), 代码如下: pu ...
- Prufer codes与Generalized Cayley's Formula学习笔记
\(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...
- 蹭你wifi后 我竟然干了这样的事
前言:故事发生在前两天,我们去参观工业园区内一家电商公司. 去参观他们公司的时候,我说要用下无线网,他们技术说密码就是他们的网站域名,我一脸懵逼表示我不知道域名,然后对方接过我手机给我连上了他们wif ...
- Jmeter使用吞吐量控制器实现不同的用户操纵不同的业务
一.需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章. 二.脚本实现 80%的用户查看文章 20%用户创建文章 根据post_i ...