第8章 标准IO库

8.1 面向对象的标准库

1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象。在fstream和sstream里定义的美中类型都是从iostream头文件中定义的相关类型派生而来。

2. 流对象不能复制,因此不能存储在vector容器中

3. 形参或返回类型也不能为流类型。如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用。

8.2 条件状态

IO标准库管理一系列条件状态成员,用来标记给定的IO对象是否处于可用状态,或者碰到了哪种特定的错误。

1. s.eof(); s.fail(); s.bad(); s.good(); s.clear(); s.clear(flag); s.setstate(flag); s.rdstate()

2. 分析while(cin>>val)出现错误的情况?

8.3 输出缓冲区的管理

下面几种情况将导致缓冲区的内容被刷新,即写入到真实的输出设备或文件:

(1)程序正常结束。

(2)在一些不确定的时候,缓冲区可能已经满了

(3)用操纵符显式的刷新缓冲区,例如行结束符endl。例如:cout<<flush; cout<<ends; cout<<endl;

(4)在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态。例如:cout<<unitbuf<<nounitbuf; 等价于cout<<flush;

(5)可将输出流与输入流关联起来

8.4 文件的输入和输出

1. 检查文件打开是否成功

ifstream infile;
ofstream outfile;
infile.open("in");
outfile("outfile");
if(!infile){
  cerr<<"error: unable to open input file";
}

2. 将文件流与新文件重新捆绑

ifstream infile("in");
infile.close();
infile.open("next");

3. 清除文件流的状态

inflie.clear();

4. 文件模式

in 打开文件做读操作

out 打开文件做写操作

app 在每次写之前找到文件尾

ate 打开文件后立即将文件定位在文件尾

trunc 打开文件时清空已存在的文件流

binary 以为禁止模式进行IO操作

例如:

ofstream outfile1("file1");
ofstream outfile2("file1", ofstream::out | ofstream::trunc);
ofstream outfile3("file3", ofstream::app);

对同一个文件作输入和输出运算

fstream inOut("copyOut", fstream::in | fstream::out);

模式是文件的属性而不是流的属性

8.5 字符串流

sstream头文件中有istringstream和ostringstream两个类分别进行读写操作

C++ Primer 读书笔记: 第8章 标准IO库的更多相关文章

  1. 《C++ Primer 4th》读书笔记 第8章-标准IO库

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936457.html

  2. C++ Primer 读书笔记 第1章

    1.1 编写简单的C++程序 每个C++程序都必须包含一个main函数,因为main函数是系统执行入口,且main函数是唯一被系统显示调用的函数. 定义函数必须指定4个元素:返回类型.函数名.形参表. ...

  3. 《C++ Primer 4th》读书笔记 第3章-标准库类型

        原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3911534.html

  4. C++ Primer 读书笔记 第2章 变量和基本类型

    C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型 ...

  5. 《Unix环境高级编程》读书笔记 第5章-标准I/O流

    1. 引言 标准I/O库由ISO C标准说明,由各个操作系统实现 标准I/O库处理很多细节,如缓冲区分配.以优化的块长度执行I/O等.这些处理使用户不必担心如何使用正确的块长度,这使得它便于用于使用, ...

  6. 《APUE》-第五章标准IO库

    大多数UNIX应用程序都使用I/O库,本章说明了该库所包含的所有函数,以及某些实现细节和效率方面的考虑.同时需要重点关注标准I/O使用了缓冲的技术,但同时也是因为它的出现,产生了很多细节上的问题. 流 ...

  7. c++ primer 学习杂记3【标准IO库】

    第8章 标准IO库 发现书中一个错误,中文版p248 流状态的查询和控制,举了一个代码例子: int ival; // read cin and test only for EOF; loop is ...

  8. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  9. 《Linux内核设计与分析》第六周读书笔记——第三章

    <Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...

随机推荐

  1. the first has precedence, perhaps you need a NameVirtualHost directive

    报错信息1: Starting httpd: [Fri May 19 11:49:42 2011] [warn] VirtualHost 127.0.0.1:80 overl aps with Vir ...

  2. plaidctf2015 uncorrupt png

    代码的执行时间挺长的,好囧! 参考了https://13c5.wordpress.com/2015/04/20/plaidctf-2015-png-uncorrupt/的代码 通过这个题目,也对Png ...

  3. Mysql安装时出现APPLY security settings错误

    在安装mysql数据库时,如果重新安装,很容易遇见apply security setting error(access denied for user 'root@localhost'(using  ...

  4. 从头开始-04.C语言中流程控制

    分支结构: if语句:当条表达式满足的时候就执行if后面大括号中语句 三种格式: if,if else , if else if else 特点:1.只有一个代码块会被执行 2.若有else那么必有一 ...

  5. php get_magic_quotes_gpc() addslashes()

    最近学了学PHP,看到这段代码 function daddslashes($str){       return (!get_magic_quotes_gpc())?addslashes($str): ...

  6. JavaScript跨域深入研究与解决办法(转)

    什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首 ...

  7. DEV GridControl导出到Excel或打印

    //方法1SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "导出Excel"; fileD ...

  8. 利用SQL语句产生分组序号

    partition  by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition  by用于给结果集分组,如果没 ...

  9. [stack]Evaluate Reverse Polish Notation

    Total Accepted: 55722 Total Submissions: 249668 Difficulty: Medium Evaluate the value of an arithmet ...

  10. RSA—非对称加密算法

    RSA:非对称加密算法加解密原理如下:已知:p,q,n,e,d,m,c其中:p与q互为大质数,n=p*q 公钥Pk(n,e):加密使用,是公开的 私钥Sk(n,d):解密使用,不公开 c:明文 m:密 ...