C++学习之文件的输入输出
一、文件的打开与关闭
1.输出数据到文件
文件的操作需要包含fstream头文件,文件的操作对象为ifstream,ofstream类对象,需要首先定义ifstream/ofstream对象(该对象与cout的用法相同),然后建立文件与对象的关联,同时指定工作模式,接着调用成员函数open()/close()实现对文件的打开和关闭
一个简单的实例就是:
#include<iostream>
using namespace std;
ofstream ocout;
ocout.open("sunfei.txt");
ocout<<"hello word";
ocout.close();
ocout.open("sunfei.txt");
ocout<<"hello word";
ocout.close();
2.从文件中读取数据
与将数据输入到文件中的操作方法类似,从文件中读取数据也是首先需要包含fstream头文件,然后建立ifstream对象,接着将对象与所要操作的对象相关联,这个对象也可以看做是cin对象,因此他们的使用方法相同,最后就是要关闭所要操作的文件。
一个简单的实例为:
char temp[25]={0};
ifstream icin;
icin.open("sunfei.txt");
icin.getline(temp,24,0);// icin>>temp;
ofstream fout;
fout.open("sunfei1.txt");
fout<<temp<<endl;
cout<<temp<<endl;
icin.close();
fout.close();
ifstream icin;
icin.open("sunfei.txt");
icin.getline(temp,24,0);// icin>>temp;
ofstream fout;
fout.open("sunfei1.txt");
fout<<temp<<endl;
cout<<temp<<endl;
icin.close();
fout.close();
3.自定义文件打开方式
C++中经常需要判断所要打开的文件是否存在,打开文件是否成功,打开文件读取是否完成等操作,这些操作在C++中都有相应的函数来进行判断,例如常用的good(),eof(),bad()以及fail()等,我们在打开一个未知文件的时候可以借助这些函数来完成文件操作的判断,下面是一个实例来演示这些函数的使用。
ofstream fout("sunfei5.txt");
fout<<"添加文件\n";
fout.close();
ifstream fin("sunfei5.txt");
if(fin.good())
{
cout<<"打开文件成功,下面是输出的内容";
char ch;
while(!fin.eof())
{
ch=fin.get();
cout<<ch;
}
fin.close();
fin.open("b.txt");
if(fin.fail())
{
cout<<"文件打开失败\n";
}
fin.close();
}
fout<<"添加文件\n";
fout.close();
ifstream fin("sunfei5.txt");
if(fin.good())
{
cout<<"打开文件成功,下面是输出的内容";
char ch;
while(!fin.eof())
{
ch=fin.get();
cout<<ch;
}
fin.close();
fin.open("b.txt");
if(fin.fail())
{
cout<<"文件打开失败\n";
}
fin.close();
}
4.ofstream,ifstream,fstream的区别
ofstream类的对象在默认情况下打开一个文件的时候会自动清空该文件的数据进行输出操作,它在默认情况下开启ios::trunc和ios::out标志位,因此既可以输出也可以覆盖原始数据,如果想要ofstream类对象在打开文件的时候不清空数据,可以将默认模式设置为ios::in,如 fout.open("people.txt",ios:in|iost::out);
ifstream则开启ios::in标志位,因此可以执行读入操作。
fstream类对象在默认情况下不会清空所打开文件的数据,它不提供默认模式,这样,在创建fstream对象的时候必须为它提供模式,假如不指定,那么它将根据后面的操作来确定它的模式。