嗨我有一个包含一些数字数据的文本文件。该文本文件 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行之后的所有行
答案 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行之后的所有行
关闭流并完成它。