删除使用sstream读取的2d向量矩阵的第一列

时间:2018-09-30 17:44:52

标签: c++ c++11

我有一个二维向量,其中行不相等。我一直在尝试删除第一列,但是在以前的stackoverflow帖子中没有运气。

示例数据:

1 2 4 5 6 6
1 2 3 4 6 6 8

读取数据的代码:

myfile.open("test.txt");
if(myfile.is_open())
{
    while(getline(myfile, line)){
        //cout << "This line: ";
        if(line != "")
{
            istringstream is(line);
            sortVec.push_back(std::vector<int>( std::istream_iterator<int>(is),
                                                    std::istream_iterator<int>() ) );
        }
  }
}
else
{
    cout << "Myfile is not open" << endl;
}

    myfile.close();

当我尝试使用std:vector擦除第一列时:

int columnIndex = 0;
    for(auto& row:sortVec){
        row.erase(next(row.begin(), columnIndex));
    }

我遇到了细分错误。

我也尝试了以下stackoverflow帖子。 How to delete column in 2d vector, c++

另外,当我手动创建矢量时,一切都可以正常运行,所以我现在迷路了。

所需的输出:

2 4 5 6 6
2 3 4 6 6 8

答案是,使用getline时不要忘记检查空行。我文件的最后一行是空的。

0 个答案:

没有答案