zoukankan      html  css  js  c++  java
  • C++ 文件操作

      用于文件操作主要有两个类ifstream,ofstream,fstream,例子如下

    1. 读操作

    #include <ifstream>
    using name space std;
    
    int main()
    {
        cCar  car;    // initialize a car object
           ifstream in;
           in.open("test.txt", ios::in); //open file
           if (!in)
           {
                cout << "open file error" << endl;
                return 0;
           }
           while (in.read((char*) &car, sizeof(car))){ // read sizeof(car) bytes from file and write into memory &car
                cout << car.color << endl;
        }
    in.close(); }

    2. 写操作

    #include <ofstream>
    using namespace std;
    
    int main()
    {
       cCar  car;    // initialize a car object
           ofstream out;
           out.open("test.txt", ios::out); //open file
           if (!out)
           {
                cout << "open file error" << endl;
                return 0;
           }
           out.write((char*) &car, sizeof(car)) // write sizeof(car) bytes from memory &car and write them into file
           out.close(); // opened file object must be closed at last.
    }

    3. 上面两个例子只是介绍了基本的读写操作,而且是逐字节顺序地操作文件。但是如果我想从文件中的中间一行读或写一个字节数字,可以做到不?

    其实fstream, ofstream,ifstream里实现了很多方便实用的成员函数,完成刚才提到的问题只需要额外地操作一下读写指针就可轻松搞定。

    何谓读写指针,就是指向当前字节流位置的指针,因此,只要我们控制好读写指针的位置,想在哪写入或读出都非常容易。

    读写操作例子

    #include <fstream>
    using namespace std;
    
    int main()
    {
       cCar  car;    // initialize a car object
           fstream f;
           f.open("test.txt", ios::in|ios::out); //open file, it can be written and read at the same time.
           if (!f)
           {
                cout << "open file error" << endl;
                return 0;
           }
           f.seekp(3*sizeof(int), ios::beg) ; // let read/write point jump to the 4th int offset from beginning
           f.read((char*) &car, sizeof(car));
           f.seekp(10);  // location the 10th byte
           f.seekp(1, ios::cur); // jump to 1 bype from current point address
           f.seekp(1, ios::end); // jump to 1 byte from the end of file
           long loc = f.tellp(); // get the location which pointer point to
    f.write("hellp", 6);
    f.close(); }
  • 相关阅读:
    查找网页元素对应的js代码
    29 图片缩小案例
    29 三级缓存案例
    [Angular2]eclipse中angular2开发环境的搭建
    28 自定义View流式布局
    28 自定义滑动开关
    28 自定义View侧滑栏
    28自定义View 模仿联系人字母侧栏
    28 自定义View画坐标和柱状图
    JFinal中使用QuartzPlugin报ClassCastException解决方法
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/4075121.html
Copyright © 2011-2022 走看看