【C++ Primer | 08】IO库
IO类
C++的输入输出分为三种:
(1)基于控制台的I/O
(2)基于文件的I/O
(3)基于字符串的I/O
istringstream类
描述:从流中提取数据,支持 >> 操作
这里字符串可以包括多个单词,单词之间使用空格分开
#include <iostream> #include <sstream> using namespace std; int main() { istringstream istr("1 56.7"); cout << istr.str() << endl;//直接输出字符串的数据 "1 56.7" string str = istr.str();//函数str()返回一个字符串 cout << str << endl; int n; double d; //以空格为界,把istringstream中数据取出,应进行类型转换 istr >> n;//第一个数为整型数据,输出1 istr >> d;//第二个数位浮点数,输出56.7 cout << n << endl; cout << d << endl; d = ; n = ; //假设换下存储类型 istr >> d;//istringstream第一个数要自动变成浮点型,输出仍为1 istr >> n;//istringstream第二个数要自动变成整型,有数字的阶段,输出为56 //测试输出 cout << d << endl; cout << n << endl; system("pause"); ; }
输出结果:
举例2:把一行字符串放入流中,单词以空格隔开。之后把一个个单词从流中依次读取到字符串
#include <iostream> #include <sstream> using namespace std; int main() { istringstream istr; string line, str; while (getline(cin,line))//从终端接收一行字符串,并放入字符串line中 { istr.str(line);//把line中的字符串存入字符串流中 while(istr >> str)//每次读取一个单词(以空格为界),存入str中 { cout << str << endl; } } ; }
输出结果:
ostringstream类
描述:把其他类型的数据写入流(往流中写入数据),支持 << 操作
#include <sstream> #include <string> #include <iostream> using namespace std; int main() { ostringstream ostr1; // 构造方式1 ostringstream ostr2("abc"); // 构造方式2 /*---------------------------------------------------------------------------- *** 方法str()将缓冲区的内容复制到一个string对象中,并返回 ----------------------------------------------------------------------------*/ ostr1 << << endl; // 格式化,此处endl也将格式化进ostr1中 cout << ostr1.str(); /*---------------------------------------------------------------------------- *** 建议:在用put()方法时,先查看当前put pointer的值,防止误写 ----------------------------------------------------------------------------*/ long curPos = ostr2.tellp(); //返回当前插入的索引位置(即put pointer的值),从0开始 cout << "curPos = " << curPos << endl; ostr2.seekp(); // 手动设置put pointer的值 ostr2.put('g'); // 在put pointer的位置上写入'g',并将put pointer指向下一个字符位置 cout << ostr2.str() << endl; /*---------------------------------------------------------------------------- *** 重复使用同一个ostringstream对象时,建议: *** 1:调用clear()清除当前错误控制状态,其原型为 void clear (iostate state=goodbit); *** 2:调用str("")将缓冲区清零,清除脏数据 ----------------------------------------------------------------------------*/ ostr2.clear(); ostr2.str(""); cout << ostr2.str() << endl; ostr2.str("_def"); cout << ostr2.str() << endl; ostr2 << "gggghh"; // 覆盖原有的数据,并自动增加缓冲区 cout << ostr2.str() << endl; }
输出结果:
参考资料
【C++ Primer | 08】IO库的更多相关文章
- 08 IO库
#include<iostream> #include<vector> #include<string> #include<fstream> using ...
- C++ Primer 读书笔记: 第8章 标准IO库
第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...
- c++ primer 学习杂记3【标准IO库】
第8章 标准IO库 发现书中一个错误,中文版p248 流状态的查询和控制,举了一个代码例子: int ival; // read cin and test only for EOF; loop is ...
- 《C++ Primer》笔记 第8章 IO库
iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型. 标准库使我们能忽略这些不同类型的流之间的差异,这是通过继承机制 ...
- 【转载】C++ IO库
本篇随笔为转载,原贴地址:<C++ Primer>第8章 IO库 学习笔记. 1.IO类 #include <iostream> istream//从流中读取数据 ostrea ...
- 第 8 章 IO库
第 8 章 IO库 标签: C++Primer 学习记录 IO库 第 8 章 IO库 8.1 IO类 8.2 文件输入输出 8.1 string流 8.1 IO类 IO对象无拷贝或赋值,因此不能将形参 ...
- c++标准之IO库
1.面向对象的标准库 2.多种IO标准库工具 istream,提供输入操作 ostream,提供输出操作 cin:读入标准输入的istream对象.全局对象extern std::istream ci ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- 文件IO函数和标准IO库的区别
摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...
随机推荐
- Bagging, Boosting, Bootstrap
Bagging 和 Boosting 都属于机器学习中的元算法(meta-algorithms).所谓元算法,简单来讲,就是将几个较弱的机器学习算法综合起来,构成一个更强的机器学习模型.这种「三个臭皮 ...
- python中的多重循环
列表中会经常用到多重循环. if __name__=='__main__': names = ['xiaoming','wangwu','lisi'] ages = ['] for name,age ...
- 8种Nosql数据库系统对比(转)
导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只 ...
- Windows下return,exit和ExitProcess的区别和分析
通常,我们为了使自己的程序结束,会在主函数中使用return或调用exit().在windows下还有ExitProcess()和TerminateProcess()等函数. 本文的目的是比较以上几种 ...
- boost.lexical_cast 学习
1,字符串 到 数值类型的转换 2,数值 到 字符串的转换 3,异常处理情况 4,boost::lexical_cast 的原型: template<typename Target, typen ...
- Ubuntu 18.04使用sudo pip3报错
在使用sudo pip3 install python库的时候出现如下警告: The directory '/home/lzhu/.cache/pip/http' or its parent dire ...
- Linux查看所有用户和组信息
主要通过以下两个命令: cat /etc/passwd cat /etc/group 步骤一:cat /etc/passwd查看所有的用户信息,详情如下图: 步骤2:cat /etc/passwd|g ...
- [转]PhpStorm快捷键大全
1 前言 PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能.Phpstro ...
- mybatis xml中不能直接用大于号、小于号要用转义字符
2.使用 <![CDATA[ ]]>标记
- nodejs和ionic小助手
nodejs已经安装完成的情况下,安装ionic小助手 win+r打开cmd. 命令: 1.node -v(查看版本信息) 2.npm -v(查看版本信息) 3.npm install -g cnpm ...