C++primer第4版第八章标准IO库

原创 2016年12月05日 14:28:05

Talk is cheap, show me the code.

  1. 流不能复制。

    ofstream o1, o2;
    o1 = o2; //wrong

  2. 流不能直接作为函数形参或者返回值,但可以使用流的引用或者指针:

    ofstream & fun1(ofstream &); //right
    ofstream * fun2(ofstream *); //right
    ofstream fun3(ofstream); //wrong

  3. 流有四种状态,bad,fail,eof和good,只有good状态才是有效状态,这四个状态分别由badbit,failbit,eofbit和goodbit控制,可以通过setstate来控制。

    ifstream ifs1;
    ifs1.setstate(badbit | failbit); //同时将badbit和failbit置为1

  4. 输出流缓存区的刷新,可以通过显示输出flush,endl,ends或者unitbuf来刷新缓存区,其中flush不输出任何字符,直接刷新缓存区,endl输出换行符然后刷新缓存区,ends输出NULL字符然后刷新缓存区,unitbuf相当于每次写入操作后都会进行flush,可以通过nounitbuf来回复系统管理缓存区的模式。 另外,标准库将cin和cout绑定在了一起,即每次cin读入一次都会自动刷新cout的缓存区进行一次输出。

    cout << "hello" << flush;
    cout << "hello" << endl;
    cout << "hello" << ends;
    cout << unitbuf << "hello" << nounitbuf;

  5. 如果程序需要利用一个流对象读取多个文件,那么每次处理完一个文件必须关闭流close()和清除流状态clear():

    vector<string> vect = {"file1", "file2"};
    vector<string>::iterator it = vect.begin();
    ifstream input;
    string s;
    while (it != vect.end())
    {
    input.open(it->c_str());
    if (!input)
    break;
    while(input >> s)
    process(s);
    input.close();
    input.clear();
    it++;
    }

  6. 文件打开模式,默认是ofstream::out, ifstream::in, ofstream::app:

    in 打开文件做读操作
    out 打开文件做写操作,直接覆盖原有内容
    app 在每次写之前找到文件尾,在原文件内容后追加内容,而不是覆盖原有内容
    ate 打开文件后立即将文件定位在文件尾
    trunc 打开文件时清空已存在的文件流
    binary 以二进制模式进行IO操作

    ifstream input("test.txt", ifstream::in); //不加后面的in模式,默认也是in模式
    ofstream output("test1.txt", ofstream::app); //想要在文件后追加内容,必须指定模式为app,否则默认是out模式

  7. 打开文件输入流和打开文件输出流分别有两种方式,一种是直接定义流时调用构造函数,另一种是先定义流后调用open函数打开对应文件。

    ifstream input1("test.txt"); //输入流方式一
    ifstream input2;
    input2.open("test.txt"); //输入流方式二
    ofstream output1("test1.txt"); //输出流方式一
    ofstream output2;
    output2.open("test1.txt"); //输出流方式二

  8. 包含头文件sstream,即可使用stringstream, istringstream, ostringstream流对象,但个人觉得这个字符串流没有多大优势,也可以很轻易被其他方式取代。

版权声明:本文为博主原创文章,未经博主允许不得转载。

【重学《C++Primer第四版》】第八章、标准IO库

本章主要讲解了IO标准库的基础知识。 下面是本章的内容图:简单的iostream继承层次 Details of knowledge 1.基类:C++中的父类就是基类 2.派生类:C++中继...
  • u013637931
  • u013637931
  • 2015年04月20日 19:46
  • 452

C++Primer笔记 第八章 标准IO库

C++ 的输入/输出(input/output)由标准库提供。 标准库定义了一族类型,支持对文件和控制窗口等设备的读写(IO)。 还定义了其他一些类型,使 string对象能够像文件一样操作,从而...
  • fireroll
  • fireroll
  • 2013年06月23日 11:20
  • 738

第八章:标准 IO 库

参考资源:( http://www.cnblogs.com/kingcat/archive/2012/05/09/2491847.html ) C++ 的输入/输出由标准库提供。 标准库IO 的继...
  • liyangguang1988
  • liyangguang1988
  • 2013年05月03日 07:32
  • 651

第八章 标准IO库

1.前面的程序已经使用了多种 IO 标准库提供的工具:  •  istream(输入流)类型,提供输入操作。  •  ostream(输出流)类型,提供输出操作。  •  cin(发音为 see-in...
  • hncujing
  • hncujing
  • 2014年12月17日 13:52
  • 275

c++primer plus 第八章习题答案(自己写的)

#include #include //第八章 using namespace std; void showstr(char *str, int n = 0); int main() { char ...
  • chinahnwqf
  • chinahnwqf
  • 2016年05月11日 23:25
  • 630

第八章 标准IO库

1.IO对象时不可复制或者赋值的:也就是说形参或者返回类型也不能为流类型。如果非要传递或者返回IO对象的的话,则必须传递或者返回指向对象的指针或者引用。如:  ofstream &print(ofst...
  • liujiyu1989
  • liujiyu1989
  • 2015年08月21日 08:45
  • 78

Linux/UNIX之标准IO库

标准IO库 当打开一个流时,标准I/O函数fopen返回一个指向FILE对象的指针。该对象通常是一个结构,它包含了标准I/O库为管理该流所需的所有信息,包括:用于实际I/O的文件描述符、指向用于该缓...
  • walkerkalr
  • walkerkalr
  • 2014年04月22日 11:55
  • 846

IO库总结——C++Primer第八章

IO库总结——C++Primer第八章C++不直接处理输入输出,而是通过定义在标准库中的类型来处理IO。C++标准库处理输入输出的IO类标准库含有的主要头文件有: iostream 处理控...
  • HustDingfu
  • HustDingfu
  • 2016年04月27日 19:56
  • 211

c++ primer 学习笔记9--文件输入输出

书285页,练习8.4 #include #include #include #include using namespace std; int main() { ifstream i...
  • wm_1991
  • wm_1991
  • 2015年04月11日 12:32
  • 268

Linux操作系统-标准IO库(1)

Linux操作系统—标准I/O库(1)(2015-8-3)分类:Linux操作系统  不仅在linux,在很多操作系统上都实现了标准I/O库,该库由ANSI C标准说明。标准I/O库是在系统调用函数基...
  • LazyBone1994
  • LazyBone1994
  • 2015年08月04日 11:38
  • 832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++primer第4版第八章标准IO库
举报原因:
原因补充:

(最多只允许输入30个字)