仅读取文本文件C ++中的SPECIFIC行范围

时间:2011-10-20 03:48:57

标签: c++

嗨我有一个包含一些数字数据的文本文件。该文本文件 ONLY 的行 必须将14到100读入我的C ++程序。这些行中的每一行包含对应于点的x,y,z坐标的三个数字。因此,总共给出了87个点的坐标。

我想将这些数字放入数组xp[87] yp[87] and zp[87].

我该如何表演?

Uptil现在我已经习惯了以下

ifstream readin(argv[1])//Name of the text file 

for (int i=0; i<=86; ++i)
{
readin>>xp[i]>>yp[i]>>zp[i];
}

但是这种技术仅适用于那些包含87行并且要从第一行本身读取 的数据的文件。

在本例中,我想忽略第14行之前的所有行和第100行之后的所有行

2 个答案:

答案 0 :(得分:4)

逐行阅读,以获得格式的最大灵活性:

#include <fstream>
#include <sstream>
#include <string>

std::ifstream infile("thefile.txt");
std::string line;

unsigned int count = 0;

while (std::getline(infile, line))
{
  ++count;
  if (count > 100) { break; }    // done
  if (count < 14)  { continue; } // too early

  std::istringstream iss(line);
  if (!(iss >> x[count - 14] >> y[count - 14] >> z[count - 14]))
  {
    // error
  }
}

// all done

答案 1 :(得分:0)

  

在目前的情况下,我想忽略第14行之前的所有行

由于您必须实际读取文件以了解行结束的位置并开始新行,因此您必须阅读13行。使用getline()和一个虚拟字符串来保存结果。

  

和第100行之后的所有行

关闭流并完成它。