C++文件处理的完整指南

558 阅读2分钟

大多数计算机程序都与文件一起工作,因为它有助于永久地存储信息。 在一个存储设备上以特殊名称存储的信息和数据 被称为文件。流指的是一连串的字节。 文件本身就是存储在磁带、磁盘等存储设备上的一堆字节。 二进制文件是一个包含信息的文件,其格式与存储在内存中的信息相同。在二进制文件中用于一行,这里不发生翻译。

C++文件处理

要在C++中处理文件, 主要是使用fstream头文件中的三个类fstream、ifstream和ofstream来处理。

  1. ofstream对文件进行写入的流类
  2. ifstream从文件中读取的流类
  3. fstream这个流类可以从/到文件中读和写。

对文件进行的操作

  1. 创建新文件
  2. 打开一个现有的文件
  3. 从文件中读取
  4. 写入文件
  5. 删除文件

文件流操作的类

#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;
}

请看下面的输出。

C++ File Handling Example

#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;
}

请看下面的输出。

ifstream

#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));

在你的程序中处理文件的步骤

  1. 首先,确定所需链接的类型。
  2. 为所需类型的链接声明流。
  3. 将所需的文件附加到流中。
  4. 现在按要求进行处理。
  5. 关闭与流的文件链接。

文件指针

所有的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)

现在,请看下面的表格。

号码功能说明
1fopen()它打开一个新的或现有的文件
2fprintf()它帮助将数据写入文件中
3fscanf()它从文件中读取数据
4fputc()它向文件中写入一个字符
5fgetc()它从文件中读取一个字符
6fclose()它关闭了文件
7fseek()它将文件指针设置到给定位置
8fputw()它将一个整数写入文件
9fgetw()它从文件中读取一个整数
10ftell()它返回当前位置
11rewind()它将文件指针设置为文件的开头。

这就是C++中文件处理的内容。