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流对象,但个人觉得这个字符串流没有多大优势,也可以很轻易被其他方式取代。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/na_beginning/article/details/53464999

Python全栈工程师-第4周

Python全栈工程师-第4周
  • 2017年09月15日 17:36

C++ Primer中文版(第4版 特别版)

简单介绍:什么;哈哈。怎么向家里交代啊,你别误会?你是来找我们的吧,于是。其他人也全部靠在了我的身边。头剪得就 本文写于:2012年10月03日;更不是弓箭手 计划:什么;哈哈。怎...
  • i_like_cpp
  • i_like_cpp
  • 2012-10-08 12:28:30
  • 1489

C++ Primer中文版 第4版

  • 2010年07月25日 19:49
  • 10MB
  • 下载

C++Primer中文版(第4版)

  • 2011年10月10日 22:13
  • 2.33MB
  • 下载

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

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 8.1 IO类 1. istream(输入流)类型,提供输入...
  • libin1105
  • libin1105
  • 2015-09-23 10:03:25
  • 1215

《C++ Primer中文版(第4版)》完整PDF版

  • 2009年06月06日 00:40
  • 988B
  • 下载

C++ Primer Plus第六版 第八章 编程练习答案

23333 时隔一年我来填坑了 CPP继续往后读然后把题目写了_(:з」∠)_ 写到哪更到哪 不一次性更完了...
  • zhaoshu01234
  • zhaoshu01234
  • 2015-08-06 00:01:56
  • 2302

C++Primer第四版中文版(电子版).pdf

  • 2015年09月05日 18:25
  • 2.85MB
  • 下载

C++ Primer Plus第六版-第八章学习笔记

本章学习C++不同于C的函数新特性,这是进入C++领域的重要一章,其内容包括:内联函数、按引用传递变量、默认的参数值、函数重载(多态)、模板函数等; 1、内联函数; C++中要使用函数必须提供定义...
  • sbcypress
  • sbcypress
  • 2016-01-04 10:07:53
  • 288

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:16
  • 761
收藏助手
不良信息举报
您举报文章:C++primer第4版第八章标准IO库
举报原因:
原因补充:

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