大多数计算机程序都与文件一起工作,因为它有助于永久地存储信息。 在一个存储设备上以特殊名称存储的信息和数据 被称为文件。流指的是一连串的字节。 文件本身就是存储在磁带、磁盘等存储设备上的一堆字节。 二进制文件是一个包含信息的文件,其格式与存储在内存中的信息相同。在二进制文件中用于一行,这里不发生翻译。
C++文件处理
要在C++中处理文件, 主要是使用fstream头文件中的三个类fstream、ifstream和ofstream来处理。
- ofstream对文件进行写入的流类
- ifstream从文件中读取的流类
- fstream这个流类可以从/到文件中读和写。
对文件进行的操作
- 创建新文件
- 打开一个现有的文件
- 从文件中读取
- 写入文件
- 删除文件
文件流操作的类
#ofstream
对文件进行写入的流类。
在程序代码中使用ofstream的例子。
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char data[100];
ifstream ifile;
//create a text file before executing.
ifile.open("text.txt");
while (!ifile.eof())
{
ifile.getline(data, 100);
cout << data << endl;
}
ifile.close();
return 0;
}
请看下面的输出。
#ifstream
从文件中读取的流类。
在程序代码中使用ifstream的例子:-
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char data[100];
ifstream ifile;
//create a text file before executing.
ifile.open("text.txt");
while (!ifile.eof())
{
ifile.getline(data, 100);
cout << data << endl;
}
ifile.close();
return 0;
}
请看下面的输出。
#fstream
它既可以从文件中读取,也可以从文件中写入。
#filebuf
设置文件缓冲区的读和写。它包含close()和open()成员函数。
打开和关闭一个文件
让我们通过使用构造函数来打开文件。
#通过使用构造函数打开文件
请看下面的代码示例。
ifstream (constr char* filename, ios_base::openmode mode = ios_base::in);
ifstream fin(filename, openmode) by default openmode = ios::in
ifstream fin(“filename”);
#通过使用open()方法来打开文件
请看下面的代码例子。
Calling of default constructor
ifstream filin; //create an input stream
filin.open("filename", openmode); //associate filin stream with file
.
.
filin.close(); //terminate association with file master
不同类型的模式
in*
代表输入,用于打开一个文件进行阅读。 支持输入操作。
out
它代表输出,用于从写作的角度打开一个文件。 支持输出操作*。
binary
它代表二进制,操作是以二进制模式进行的,而不是以文本格式和其他方式。
ate
它代表at the end,在这个输出中,操作从文件的末端开始。
app
它代表append,在这里面,所有的输出操作都发生在文件的末尾,附加到现有的文件上。
Trunc
它代表截断,有了它,文件打开前的任何内容都会被丢弃。
所有这些标志都可以在位操作符OR(|)的帮助下进行组合。
例如, 如果我们想在二进制模式下打开一个文件example.scs来添加数据,我们可以通过下面对成员函数open()的调用来实现 。
fstream file;
file.open ("example.scs", ios::out | ios::app | ios::binary);
默认的打开模式
#ifstream
ios::in
#ofstream
ios::out
#fstream
ios::in | ios::out
关闭文件
见以下代码。
stream_object.close();
fout.close();
fin.close();
输入和输出操作
#put()和get()函数
函数put()是向关联流写入一个单一的字符。
函数get()是从关联流中读取一个单字符。
例子。
file.get(s);
file.put(s);
#write()和read()函数
write()和read()函数是写和读二进制数据块(文件)。
请看下面的代码。
file.read((char *)&a, sizeof(a));
file.write((char *)&a, sizeof(a));
在你的程序中处理文件的步骤
- 首先,确定所需链接的类型。
- 为所需类型的链接声明流。
- 将所需的文件附加到流中。
- 现在按要求进行处理。
- 关闭与流的文件链接。
文件指针
所有的I/O流对象都至少有一个内部流指针。
Ifstream就像istream,它有一个叫做get指针的指针,通过指向该元素来读入下一个输入。
Ofstream就像otream,它有一个叫做put指针的指针,位于下一个元素要被写入的点。
最后是stream,它继承了iostream的get和put指针。
这些函数的其他原型如下。
seekg(offset, refposition );
seekp(offset, refposition );
refposition取自ios类中定义的以下三个常数之一。
| ios::beg ios::cur ios::end | 文件的起点 指针的当前位置 文件的结束 |
例子。
file.seekg(-5, ios::beg)
现在,请看下面的表格。
| 号码 | 功能 | 说明 |
| 1 | fopen() | 它打开一个新的或现有的文件 |
| 2 | fprintf() | 它帮助将数据写入文件中 |
| 3 | fscanf() | 它从文件中读取数据 |
| 4 | fputc() | 它向文件中写入一个字符 |
| 5 | fgetc() | 它从文件中读取一个字符 |
| 6 | fclose() | 它关闭了文件 |
| 7 | fseek() | 它将文件指针设置到给定位置 |
| 8 | fputw() | 它将一个整数写入文件 |
| 9 | fgetw() | 它从文件中读取一个整数 |
| 10 | ftell() | 它返回当前位置 |
| 11 | rewind() | 它将文件指针设置为文件的开头。 |
这就是C++中文件处理的内容。

