zoukankan      html  css  js  c++  java
  • fstream类总结

    - ofstream, ifstream, fstream

        在头文件fstream中,在fstream类中,用open成员函数打开文件,实现类与文件的关联操作。

        - open(filename, mode, prot):对所属类进行用指定的参数进行特定的文件关联

                  几种打开方式(mode)(这些方式可以用 '|' 组合起来)

    ios::in

    打开输入()文件

    ios::out

    打开输出()文件

    ios::ate

    初始位置为文件尾

    ios::app

    所有写入附加在文件末尾

    ios::trunc

    如果所操作的文件已经存在了,就先删除

    ios::binary

    以二进制打开

                 打开文件的属性(prot)(这些方式可以用'+'进行组合,这个参数可以省略不传)

    0

    普通文件,打开操作

    1

    只读文件

    2

    隐含文件

    4

    系统文件

        - close():用来关闭文件,是文件重新变为可访问,对象流也可以打开其他文件了

     

     1 #include <fstream>
     2 using namespace std;
     3 int main ()
     4 {
     5     ofstream fw, fw1;
     6     
     7     fw.open("test.txt");
     8     fw1.open("test1.txt");
     9     
    10     fw.close();
    11     fw1.close();
    12     
    13     return 0;
    14 }

     

      - 读写: 使用重载的'<<' 或者 '>>', 也可以使用成员函数来实现

     1 #include <fstream>
     2 using namespace std;
     3 
     4 int main ()
     5 {
     6     ifstream fr;
     7     ofstream fw;
     8     char word[200], line[200];
     9     
    10     fw.open("write.txt");
    11     fr.open("read.txt");
    12     
    13     fr  >> word;    //读取文件,一个单词
    14     fr.getline (line, 100);        //读取一行内容
    15     
    16     fw << "write file test" << endl;
    17     
    18     fw.close();
    19     fr.close();
    20     
    21     return 0;
    22 }

     

      - 判断文件状态

        is_open():文件是否正常打开

        bad():读写过程中是否出错(操作对象没有打开,写入的设备没有空间)

        fail():读写过程中是否出错(操作对象没有打开,写入的设备没有空间,格式错误--比如读入类型不匹配)

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

        good():以上任何一个返回true,这个就返回false

      - 获得和设置流指针

        - 对于所有的输入输出流都有至少一个指针,指向下一个要操作的位置

          ofstream  put_point

          ifstream  get_point

          fstream  put_point和get_point

        - 获取流指针位置

          tellg(): 返回输入流指针的位置(返回类型long)

          tellp(): 返回输出流指针的位置(返回类型long)

        - 设置指针位置

          seekg(long  position):  设置输入流指针位置为第position个字符(文件首位置为开始位置)

          seekp(long  position):  设置输出流指针到指定位置

       - 缓存和同步

    当我们对文件流进行操作的时候,它们与一个streambuf 类型的缓存(buffer)联系在一起。这个缓存(buffer)实际是一块内存空间,作为流(stream)和物理文件的媒介。例如,对于一个输出流, 每次成员函数put (写一个单个字符)被调用,这个字符不是直接被写入该输出流所对应的物理文件中的,而是首先被插入到该流的缓存(buffer)中。

     

    当缓存被排放出来(flush)时,它里面的所有数据或者被写入物理媒质中(如果是一个输出流的话),或者简单的被抹掉(如果是一个输入流的话)。这个过程称为同步(synchronization),它会在以下任一情况下发生:

     

          • 当文件被关闭时: 在文件被关闭之前,所有还没有被完全写出或读取的缓存都将被同步。
          • 当缓存buffer 满时:缓存Buffers 有一定的空间限制。当缓存满时,它会被自动同步。
          • 控制符明确指明:当遇到流中某些特定的控制符时,同步会发生。这些控制符包括:flush 和endl。
          • 明确调用函数sync(): 调用成员函数sync() (无参数)可以引发立即同步。这个函数返回一个int 值,等于-1 表示流没有联系的缓存或操作失败。

    参照博客传送门: 晨雪无痕

     

  • 相关阅读:
    一个帖子掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体(转
    Android开发交流群
    我的程序里 《我的歌声里》程序员版
    《老罗Android开发视频教程安卓巴士》(Android 开发)
    #百度360大战# 我为什么要支持360
    安卓巴士移动开发者周刊第九期
    水杯题的非常好的解释
    [LeetCode] Jump Game
    [LeetCode] Longest Common Prefix
    [CareerCup][Google Interview] 寻找动态的中位数
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/6429854.html
Copyright © 2011-2022 走看看