0

I am new to programming and I have this question. I have this file that I am opening

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

The file has 3 data each line. The first is an integer, the second is an alphabet and the third is an address(like computer memory address). How do I extract these line by line into 3 variables that I can process, and then repeat it with next line and so.

4

1 回答 1

0

您应该知道,与 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 才能成功提取。

于 2013-11-06T00:34:07.870 回答