第八章: IO库

一、IO类

1、iostream定义了读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型

2、不能拷贝IO对象,因此不能将形参或返回类型设置为流类型:通常以引用方式传递和方回流

3、读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的

4、通常在使用一个流之前应该检查它是否处于良好状态

5、管理输出缓冲

  • 默认情况下,cin和cerr都关联到cout,因此,读cin或写cerr都会导致cout的缓冲区被刷新
  • cout << "hi!" << end;    //输出hi和一个换行符,然后刷新缓冲区
    cout << "hi!" << flush;    //输出hi,刷新缓冲区,不附加任何额外字符
    cout << "hi!" << ends;    //输出hi和一个空字符,刷新缓冲区

二、文件输入输出

1、ifstream从一个给定文件读取数据,ofstream向一个给定文件写入数据, fstream可以读写给定文件

2、打开文件:fstream fstrm(s, mode);按mode方式打开文件

    in    //以读方式打开
    out    //以写方式打开
    app    //每次写操作前定位到文件尾
    ate    //打开文件后立即定位到文件尾
    trunc    //截断文件
    binary    //二进制方式进行IO
  • 默认情况下,即使没有指定trunc,以out模式打开的文件也会被截断
  • 要最佳莫斯必须自己指定app模式才可以追加写(ofstream::out | ofstream::app)
时间: 2024-08-01 22:44:19

第八章: IO库的相关文章

《C++primer(第五版)》学习之路-第八章:IO库

[ 声明:版权所有,转载请标明出处,请勿用于商业用途.  联系信箱:[email protected]] 8.1 IO类 1. istream(输入流)类型,提供输入操作 ostream(输出流)类型,提供输出操作 cin,一个istream对象,从标准输入读取数据 cout,一个ostream对象,向标准输出写入数据 cerr,一个ostream对象,通常用于输出程序错误信息,写入到标准错误 >>运算符,用来从一个istream对象读取输入数据 <<运算符,用来向一个ostrea

C++primer笔记:IO库、顺序容器、关联容器、面向对象、泛型算法、模板和泛型编程

第八章:IO库不直接来处理输入输出,而是通过在标准库中的一些类型来处理io istream ostream cin cout cerr getline函数 iostream:定义了用于基本读写流的基本类型 fstream: 定义了基本的读写命名文件的类型 sstream:定义了读写内存的string对象的类型 IO对象无拷贝或者赋值 条件状态:IO定义了一些函数和标志,可以帮助我们访问和操作流得条件状态 strm::iostate 条件状态的完整功能 strm::badbit 流已崩溃 strm

C++ Primer 读书笔记: 第8章 标准IO库

第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象.在fstream和sstream里定义的美中类型都是从iostream头文件中定义的相关类型派生而来. 2. 流对象不能复制,因此不能存储在vector容器中 3. 形参或返回类型也不能为流类型.如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用.

[APUE]标准IO库(下)

一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中"表3-1中的最佳时间即<程序1>","表3-1中的单字节时间指的是<程序1>中BUFSIZE为1时运行时间结果",fgetc/fputc版本程序这里没放出] 对于三个标准IO版本的每一个其用户CPU时间都大于最佳read版本,因为每次读一个字符

在UNIX系统下使用IO库程序

在上一篇文章中,我们已经可以在UNIX下编译一个hello world 程序了.今天介绍UNIX系统下,如何在程序中使用IO库. 主体流程分为以下三步:(代码参考的是:<<C++ Primer>>) 第一步:新建文件,并命名为“Progr1.cpp” 第二步:在Progr1.cpp中写好main函数,并使用cin ,cout 这两个IO库函数.代码如下 #include <iostream>//告诉编译器要使用 iostream 库.尖括号里的名字是一个.头文件.程序使

C++ Primer学习总结 第8章 IO库

 第8章 IO库 1.    IO类继承关系: 2.    查询iostream流状态P280-281 V是一个int,当我们输入1, 'r',或Ctrl+z 时的输出分别如下: cin.clear()可以清楚所有的错误位,使good()返回true. 3.    fstream对文件的读写P284 初始创建读入和写出fstream对象之后,把fin和fout完全看成cin和cout处理即可,它们操作几乎没有区别. 4.    对同一个文件同时打开进行读写会出现不可预知的BUG. 对于文件的操作

读书笔记-APUE第三版-(5)标准IO库

ISO C标准I/O库使用流的概念读写文件.流是对数据传输的抽象,可以把流理解为从起点到终点间的字节序列. 标准I/O库通过维护进程空间内的缓冲区,减少read/write系统调用次数来提高I/O效率.之前介绍的Unbuffered I/O和文件描述符fd打交道,标准I/O则使用FILE指针. typedef struct{ short level;/*缓冲区满程度*/ unsigned flags;/*文件打开状态标志*/ char fd;/*文件描述符*/ unsigned char hol

Node.js websocket 使用 socket.io库实现实时聊天室

认识websocket WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duple).一开始的握手需要借助HTTP请求完成. 其实websocket 并不是很依赖Http协议,它也拥有自己的一套协议机制,但在这里我们需要利用的socket.io 需要依赖到http . 之前用java jsp写过一个聊天,其实实现逻辑并不难,只是大部分时间都用在UI的设计上,其实现原理就是一个基于websocket的通信,要想做一个好的聊天室,我觉得大部

Unix环境之标准IO库

UNIX的文件IO都是针对文件描述符的,而标准IO的操作则是围绕流进行的.当一个流最初被创建时,它并没有定向.若在未定向的流上使用一个多字节IO函数,则将该流的定向设置为宽定向:若在未定向的流上使用一个单字节IO函数,则将该流的定向设置为字节定向. stdio.h定义了三个标准流,stdin.stdout和stderr,分别是标准输入.标准输出和标准出错. 缓冲-- 标准IO库提供缓冲的目的是尽可能减少使用read和write调用的次数.它也对每个IO流自动地进行缓冲管理,从而避免了应用程序需要

嵌入式 Linux系统编程(三)——标准IO库

嵌入式 Linux系统编程(三)--标准IO库 与文件IO函数相类似,标准IO库中提供的是fopen.fclose.fread.fwrite等面向流对象的IO函数,这些函数在实现时本身就要调用linux的文件IO这些系统调用. 一.标准IO库函数的缓冲机制 由于IO设备的访问速度与CPU的速度相差好几个数量级,为了协调IO设备与CPU的速度的不匹配,对于块设备,内核使用了页高速缓存,即数据会先被拷贝到操作系统内核的页缓存区中,然后才会从操作系统内核的缓存区拷贝到应用程序的地址空间. 当应用程序尝