对于文件的读取,和写入操作类似,也是通过fstream中的类来完成。
写入是通过ofstream,读取就是通过ifstream。同样,在ifstream中有着open和close等成员函数用于打开和删除文件。但是文件的读取需要考虑到文件是否存在,文件读取是否完毕等操作等等,所以操作起来比较麻烦。
对于文件打开,也存在多中方式,如下:
方式名称 | 含义 |
---|---|
ios::in | 通过只读的方式打开文件,不能对文件进行写入操作 |
ios::binary | 通过二进制的方式打开文件 |
具体代码示例如下:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Read
{
private:
ifstream m_ifs;
string m_filename;
string m_name;
int m_age;
bool m_isquit;
public:
Read(string filename = "./111.txt")
{
this->m_name = "bs";
this->m_age = -1;
this->m_filename = filename;
this->m_ifs.open(this->m_filename, ios::in);
if (!this->m_ifs.is_open())
{
this->m_isquit = true;
}
else
this->m_isquit = false;
}
~Read()
{
this->m_ifs.close();
}
void Show()
{
if (this->m_isquit == true)
{
cout << "File read false!" << endl;
return;
}
cout << "NAME" << "\t" << "AGE" << endl;
while (!this->m_ifs.eof())
{
this->m_ifs >> this->m_name;
this->m_ifs >> this->m_age;
cout << this->m_name << "\t" << this->m_age << endl;
}
}
};
int main()
{
Read * read = new Read;
read->Show();
delete read;
return 0;
}
在上面的代码中,通过类的方式来对本次想要实现的功能进行封装。对于文件的读出可以使用>>运算符来实现。其中的is_open方法可以判断文件是否打开成功。若是打开成功就会返回true,否则返回false。而文件在读取的过程中会不断的获取文件中的各种数据,使用eof方法就可以判断文件是否已经读取完毕。若是文件读取完毕就会返回true,否则返回false。
通过对eof和is_open方法的使用让文件读取的操作更加的合理和完善。