C++的简单文件操作
文件操作
1.1 流和文件流对象
文件是存放在计算机外存上的一组相关信息的集合。
C++采用“流”的概念来描述文件。接受数据的地方称为目标,发出数据的地方称为源。
为了能与文件交换数据,就需要与文件建立联系,流就是这种联系。处理文件前,必须先创建文件流对象,它与文件相关,通过文件流对象操作文件。
C++提供了文件输入流ifstream、文件输出流ofstream和文件输入输出流fstream。为了从文件中读取数据,需要创建一个与该文件关联的文件输入流对象。
Ifstream inFile; //创建一个输入文件流对象inFile
为了向文件中写数据,
ofstream outFile; //创建一个输出文件流对象outFile
fstream ioFile; //创建一个输入输出文件流对象ioFile
为了使用ifstream、ofstream和fstream文件源,必须包含fstream头文件。
2.1 打开文件
通过文件流对象的成员函数open来打开文件。
inFile.open(“example.txt”); //打开一个名为example.txt的文本文件
(打开文件时,通常需要指定文件模式)
如: inFile.open(“example.txt”); 等价于inFile.open(“example.txt”,ios :: in);
还可以在创建文件流对象时打开文件。
ifstreaminFile(“example.txt”);
如果文件不存在,则打开失败。
与ofstream文件输出流对象关联的文件;
outFile.open(“example.txt”);
等价于:outFile.open(“example.txt”,ios : : out|ios :: trunc);
如果文件不存在,则新建文件夹;如果文件夹存在,则清空文件原有内容。
默认情况下,文件都是以文本文件模式打开。打开二进制文件要显示指定二进制文件模式。
outFile.open(“example.dat”,ios: : binary);
2.2关闭文件
将文件流对象与外存上的文件脱离联系。
inFile.close( );//关闭文件
例子:
3.1文件输入输出
可以使用流插入运算符<<向文件中写入数据,也可以使用流提取运算符>>从文件中读取数据。
例子:
使用了流插入运算符<<;把内容写入与流对象outFile关联的文件中。
使用了流提取运算符>>;把与流对象outFile关联的文件中的内容读出。
字符输入输出
文件流对象成员函数get用于从文件中读取一个字符,文件流对象成员函数put用于向文件写入一个字符。
inFile.get(ch);//从inFie关联的文件中读取字符存放在ch中。
outFile.put(ch); //将存放在ch中的字符写到outFile关联的文件中。
行输入输出
getline函数用于从文件中读取一行字符;
stringline //定义一个字符串来存放读入的内容
getline(inFile, line); //从文件中读取一行字符;
块输入输出
数据块是一组相关数据的集合。
文件流对象成员函数read用于从文件中读入数据块,文件流对象成员函数write用于向文件写入数据块。(read和write函数通常用于二进制文件)
inFile.read( 字符指针(读首地址),数据块大小sizeof());
outFile.write( 字符指针(存首地址),数据块大小sizeof());
注:对于非字符数据块,必须使用reinterpret_cast<char*>强制转化为字符指针。