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

时间:2013-11-06 00:14:16

标签: c++

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

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

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

1 个答案:

答案 0 :(得分:0)

您应该知道有一些首选的C ++方法可以通过C stdio方法处理文件:

  • 使用标准预定义流: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(文件结尾)字符(或与操作数类型不匹配的字符)时,提取将停止。

IOStream的强大之处在于它允许链接表达式。所以你能够做到这一点:

in >> num >> letter >> address;

相当于:

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

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