zoukankan      html  css  js  c++  java
  • c++中IO输入输出流总结<二>

    1 文件的打开和关闭

    1.1 定义流对象

      ifsteam iflie;//文件输入流对象

      ifsteam iflie;//文件输出流对象

      fsteam iflie;//文件输入输出流对象

    1.2 打开文件

      void open(const unsigned char* filename,int mode,int accessfilebuf:opnprot)

        mode为打开的方式,相关标记如下图所示(ios中)

        

      注意:

        (1)通常打开方式用|组合起来

           ios::in|ios::out  //读写方式打开文件

           ios::out|ios::binary //二进制写方式打开文件

        (2)iftream:默认ios::in

         ofstream:默认ios::out|ios::trunc

         fstream:默认ios::in|ios::out|ios::app

    2 状态函数

      eof():读文件到达末尾 true

      bad():读文件出错返回true 当我打开一个不可以写但是进行写入的时候

      fail:当需要输入整形的时候我们输入了字母

      good:如果上面任何一个函数都是true的话 返回false

      clear():

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int main()
    {
        int integerV;
        cout << "before a bad input operation:"
            << "
     cin.eof():" << cin.eof()
            << "
     cin.fail():" << cin.fail()
            << "
    cin.bad():" << cin.bad()
            << "
    cin.good()" << cin.good() << endl;
        cin >> integerV;//control +D/Z
        cout << "after a bad input operation:"
            << "
     cin.eof():" << cin.eof()
            << "
     cin.fail():" << cin.fail()
            << "
    cin.bad():" << cin.bad()
            << "
    cin.good()" << cin.good() << endl;
        system("pause");
        return 1;
    
    }

    3 (cin)和(!cin)的分析

      不管是while(cin)还是if(cin)都是合法的为什么?自定义一个类,然后定义这个类的对象,使用if语句判断它是不合法的。说明流对象有莫中转换函数 可以将一个流对象转换成判断语句可以识别的类型

    operator void*() const函数在while(cin)或者if(cin)隐式转换位void*类型
    bool operator!() const;函数在while(!cin)或者式if(!cin)被调用 将流对象转换成bool对象
    while(cin)--->while(!cin.fail)
    while(!cin)---->while(cin.fail)

     1 class A
     2 {
     3 public:
     4     A(){}
     5     ~A(){}
     6     operator void*() const
     7     {
     8         cout << "cast to void*";
     9         return (void*)this;
    10     }
    11     bool operator!() const
    12     {
    13         cout << "cast to bool";
    14         return true;
    15     }
    16 };
    17 
    18 int main()
    19 {
    20     A a;
    21     if (a)cout << "first" << endl;
    22     if (!a)cout << "second" << endl;
    23     system("pause");
    24     return 1;
    25 }

    4 文件读写操作

  • 相关阅读:
    spring中用到哪些设计模式?
    配置监听器使项目启动时创建消费者
    ActiveMQ依赖JDK版本关系
    ActiveMQ之topic主题模式
    ActiveMQ与Spring整合
    ac自动机模板
    poj 3735 Training little cats矩阵快速幂
    KMP算法模板 求子串和模板串首先匹配的位置
    hdoj 2665 Kth number主席树裸
    vijos P1081野生动物园 主席树求区间第K大
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/7289827.html
Copyright © 2011-2022 走看看