C++ 逐行从文件中读取数据

C++ Reading data from a file line by line

本文关键字:读取 数据 文件 逐行 C++      更新时间:2023-10-16

我是编程新手,我有这个问题。我有这个文件,我正在打开

ifstream fin;
FILE * pFile;
pFile = fopen (fname,"r");

该文件每行有 3 个数据。第一个是整数,第二个是字母表,第三个是地址(如计算机内存地址)。如何将这些逐行提取为可以处理的 3 个变量,然后用下一行重复,依此类推。

您应该知道,与 C stdio 方法相比,有首选的C++方法来操作文件:

  • 使用标准的预定义流:std::ofstream用于输出,std::ifstream用于输入。
  • 格式化/
  • 未格式化的 I/O,例如 operator<<()operator>>()read()write()
  • 用于操作提取数据的内存中 I/O。

对于这种特殊情况,您需要的是输入流功能以及格式化输入。格式化的输入将通过 operator>>() 完成。

但在开始之前,您必须实例化文件流。由于您使用的是输入,因此将使用std::ifstream

std::ifstream in("your/path.txt");

接下来要做的是创建三个变量,您将提取到流中的值。由于您事先知道类型,因此您需要的类型分别是整数、字符和字符串:

int  num;
char letter;
std::string address;

接下来要做的是使用 operator>>() 从流中获取第一个有效值。它的工作方式是该函数分析右操作数的类型,并确定从文件流中提取的字符是否会在解析后创建有效值。当流遇到空格时,换行符或 EOF(文件结尾)字符(或与操作数类型的字符不匹配的字符)将停止提取。

IOStreams之所以强大,是因为它允许链接表达式。因此,您可以执行此操作:

in >> num >> letter >> address;

相当于:

in >> num;
in >> letter;
in >> address;

这就是这个简单案例所需的全部内容。在更复杂的情况下,可能需要循环和内存中 I/O 才能成功提取。