• C++ 更新文件


    我们如何更新二进制文件呢?

    还是使用上一篇博客student.dat的例子(C++ 随机访问文件)。如果我们想更新第2个学生的名字,那么我们可以使用组合模式ios::in|ios::out|ios::binary打开要更新的文件,即student.dat文件。

    代码如下:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    class Student {
    public:
        Student(){}
        Student(string name, int age, int score){
            this->age = age;
            this->name = name;
            this->score = score;
        }
        int getAge() const{
            return this->age;
        }
        char getName() const{
            return this->name;
        }
        int getScore() const{
            return this->score;
        }
        void setAge(int age){
            this->age = age;
        }
        void setName(char name){
            this->name = name;
        }
        void setScore(int score){
            this->score = score;
        }
    private:
        int age;
        char name;
        int score;
    };
    
    void displayStudent(const Student student){
        cout << "学生" << student.getName() << "的年龄是" << student.getAge() << ", 成绩是" << student.getScore() << endl;
    }
    int main()
    {
        fstream binaryio;
        binaryio.open("student.dat", ios::out|ios::in|ios::binary);
    
        Student student1;
        binaryio.seekg(sizeof(Student));
        binaryio.read(reinterpret_cast<char*>(&student1),sizeof(Student));
        displayStudent(student1);
    
        student1.setName('Z');
        binaryio.seekp(sizeof(Student));
        binaryio.write(reinterpret_cast<char*>(&student1),sizeof(Student));
    
        Student student2;
        binaryio.seekg(sizeof(Student));
        binaryio.read(reinterpret_cast<char*>(&student2),sizeof(Student));
        displayStudent(student2);
    
        binaryio.close();
    
        return 0;
    }

    运行结果:

  • 相关阅读:
    IOS-github优秀开源项目大全
    IOS-UISearchBar
    iOS-资源大全
    基于java的https双向认证,android上亦可用
    三重Des对称加密在Android、Ios 和Java 平台的实现
    Python练习—文件
    C语言文件进阶操作
    C语言文件基本操作
    二叉树模板
    单源最短路——Dijkstra算法
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/12952128.html
Copyright © 2020-2023  润新知