《C++ Primer Plus》:文件

2020-08-08  本文已影响0人  Dragon_boy

简单文件IO

要让程序写入文件,要:

ofstream fout;
fout.open("jar.txt");

这是打开一个写入文件,可以结合在一起:

ofstream fout("jar.txt");

写入文件的话,使用cout的形式:

fout << "Dull Data";

默认打开文件的方式会清空已有文件,或者创建一个新文件。

读文件类似:

ifstream fin;
fin.open("jellyjar.txt");

char ch;
fin >> ch;

输入和输入流对象过期时,会自动关闭文件,也可以手动关闭文件:

fout.close();
fin.close();

流状态检查

对于文件流,可以这么检查文件是否成功打开:

fin.open("a.txt");
if(fin.fail())  //打开失败
{

}

还可以这么做:

if(!fin)  //打开失败
{

}

还可以使用is_open()方法:

if(!fin.is_open())  //打开失败
{

}

打开多个文件

使用一个文件流对象连续处理文件:

ifstrean fin;
fin.open("fat.txt");
...
fin.close();
fin.clear();  //重置fin
fin.open("rat.txt");
...
fin.close();

文件模式

文件打开方法open()的第二个参数和文件流对象的构造函数的第二个参数可以设置文件打开方式。文件模式常量如下:

不同常量可以用|隔开使用。ifstream的open()默认的模式是ios_base::in,ofstream的open()默认的模式是ios_base::out | ios_base::trunc。

对于读写,文件流对象还有write()和read()方法。

随机存取

fstream提供了两个方法来在文件中移动,seekg()和seekp(),前者将输入指针移到指定的文件位置,后者将输出指针移动到只当的文件位置,也可以将seekg()用于ifstream,seekp()用于ofstream。

seekg()原型:

istream& seekg(streamoff, ios_base::seekdir);
istream& seekg(streampos);

第一个原型定位到第二个参数指定文件位置特定距离的位置,第二个定位到离文件开头特定距离的位置

上一篇 下一篇

猜你喜欢

热点阅读