【问题标题】:Reading a line of a text file from a specific position in C++从 C++ 中的特定位置读取文本文件的一行
【发布时间】:2016-12-06 20:56:18
【问题描述】:

我想通过以下方式读取 C++ 中的文本文件:

  1. 忽略整个第一行,因为它只是作为介绍。
  2. 仅从特定位置读取以下行。

阅读的起始位置是固定的,并且每一行都保持不变;但是,之后的数字可能是可变长度的。我需要将所有这些数字从第 2 行到第 n 行保存到一个数组中。 目前我可以使用getline 读取常规二维数组。 我该如何解决这些问题?

我想阅读的一行示例可能是:

个人 1:25 988.3 0.0023 7

【问题讨论】:

    标签: c++ arrays multidimensional-array text fstream


    【解决方案1】:

    要将文件设置到某个位置,请使用std::ifstream::seekg()

    要将文件设置为行首,您必须读取并计算行尾。许多文本文件都有可变长度的文本行。

    【讨论】:

    • 请问您将如何实现seekg()?目前我使用while-loop 和getline 来读取仅包含数字的数组。
    • On 方法是使用std::getline 读取整个文件;但在使用std::getline 之前,使用std::ifstream::tellg() 获取文本行的文件位置。将文件位置存储在std::vector 中。这将允许您检索文件中每一行的起始位置。
    【解决方案2】:

    我该如何解决这些问题?

    你不能,除非你能确保第一行之后的所有数据行都是相同的长度。

    如果你不能确保这一点,那么你所能做的就是通读前面的所有行。

    我过去采用的另一种方法是以二进制格式在辅助文件中生成行起始位置的“索引”(以便我可以直接跳转到该文件中的正确位置),并使用它来跳转到文本文件中的正确位置。当然,这意味着您每次替换/修改数据文件时都需要重新生成该索引文件。

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多