从.dat文件中仅提取几列

时间:2015-11-09 09:54:31

标签: c++ extract multiple-columns getline istringstream

我要用我的论文制作一个用c ++编写的程序打开并从文件.dat中只提取两列,就像这样,有很多行:

0.000000 -9.833374 1.000000 0.156921 0.125478 0.350911
5.015625 -9.831743 1.000000 0.157021 0.125752 0.349945
10.015625 -9.838824 1.000000 0.157101 0.125566 0.351512

我已经用getline()命令打开并读取每一行,但我不知道如何只提取我需要的列(特别是第二和第四列)。 我是一个非常初学者使用这种编程语言,所以有人可以给我一些例子或说明如何获得这个任务吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以使用stringstream

ifstream file("data.dat")
string line;

while (getline(file,line))
{
    istringstream ss(line);

    // possibly you will want some other types here.
    string col2;  
    string col4;

    ss >> col2;    // extracts 1st col.
    ss >> col2;    // extracts 2nd col.

    ss >> col4;    // extracts 3rd col.
    ss >> col4;    // extracts 4th col.

    // Now you can something with col2 and col4
    cout << col2 << " " << col4 << endl;

}

请注意,首先我将第一列提取到col2,然后用第二列覆盖它。我类似于col4

当然,您可以对col2col4使用其他类型,只要这与您的文件保持一致。

此外,如果您想要阅读专栏,那么只需将其丢弃后再看看std::istream::ignore,这样就可以跳过输入。