• 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(); }
  • 相关阅读:
    CentOS在线安装RabbitMQ3.7
    php redis的GEO地理信息类型
    (PHP)redis Zset(有序集合 sorted set)操作
    (PHP)redis Set(集合)操作
    (PHP)redis Hash(哈希)操作
    (PHP)redis List(列表)操作
    php cURL error 60
    go build 不同系统下的可执行文件
    windows下改变go的gopath
    线程池简要学习[转]
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/4075121.html
Copyright © 2020-2023  润新知