文件操作补充

 2023-05-31 09:55:55  阅读 0

在fstream头文件中包含的可以用于文件操作的类不只ifstream和ofstream,这两种类分别只能进行读取和写入的操作。在使用起来的时候虽然较为安全,但是不是非常的方便。fstream头文件还为文件操作提供了另外一种类:fstream。

 

fstream类可以对文件进行读取和写入两种操作。而且在使用的时候用法和ifstream以及ofstream的用法是相同的。对于这种情况,在使用起来的时候也是比较的方便。但是因为使用的多样,导致其在使用的时候需要注意细节以防止对文件进行错误的操作。

 

本次,采用类封装的方式通过fstream来实现一个写入和读取文件的小的案例。如下:

 

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
​
class File
{
private:
    fstream m_fs;
    string m_filename;
    string m_name;
    int m_age;
    int m_number;
    void save()
    {
        this->m_fs << this->m_name << endl;
        this->m_fs << this->m_age << endl; 
    }
public:
    File(string filename = "./111.txt") 
    {
        this->m_filename = filename;
        this->m_number = 0;
    }
    void Write()
    {
        this->m_fs.open(this->m_filename, ios::out);
        int number;
        cout << "Please input number: ";
        cin >> number;
        int i;
        for (i = 0; i < number; i++)
        {
            cout << "Please input your name: ";
            cin >> this->m_name;
            cout << "Please input your age: ";
            cin >> this->m_age;
            save();
        }   
        this->m_number = i;
        this->m_fs.close();
    }
    void Read()
    {
        this->m_fs.open(this->m_filename, ios::in);
        if (!this->m_fs.is_open()) return;
        cout << "NAME\t" << "AGE" << endl;
        for (int i = 0; i < this->m_number; i++)
        {
            this->m_fs >> this->m_name >> this->m_age;
            cout << this->m_name << "\t" << this->m_age << endl;
        }
        
        this->m_fs.close();
    }
};
​
int main()
{
    File * file = new File;
    file->Write();
    file->Read();
    delete file;
    return 0;
}

 

 

在示例中,我们不仅仅在共有属性下写入了函数,在私有属性下也写入了函数。但是因为save函数不需要对外提供,仅仅在类中使用,所以将其写在私有属性之中。

 

此外,不难发现,在类中私有属性的成员的名称前面使用了统一的“m_”的前缀,通过这种方式可以防止形参和私有属性重名。

 

另外,本次在读取文件的时候是通过一个记录读取数量的属性m_number来进行限制的,并非使用的eof成员函数。而且文件的打开和关闭都是成对在一个函数中出现的。

 

通过这样的方式,就可以基本实现对文件的写入和读取的操作了。读者可以自己动手尝试为代码进行优化或者添加新的功能。

上一篇: 文件读取操作
下一篇: 异常处理
标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码