数据文件的第二行未正确读取

时间:2018-09-22 11:11:12

标签: c++

为什么我的程序从文本文件中读取第二行的错误值? 在读取第一行的最后一个字符时,它返回字符串“ 1 \ n-1”。

数据文件:

1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1
1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1

代码:

vector<vector<int>> input_vector, pinput_vector;
vector<int> patterns_vector;

for(auto i = 0; i < 2; i++)
{
    patterns_vector.push_back(1);
    for(auto j = 1; j < 15; j++)
    {
        getline(training, s,' ');
        cout << s;
        patterns_vector.push_back(stoi(s));
    }
        input_vector.push_back(patterns_vector);
        patterns_vector.clear();
}
for(auto i = 0; i < 2; i++)
{
    for(auto j = 1; j < 15; j++)
    {
        cout << input_vector.at(i).at(j);
    }
    cout << "\n";
}

输出:

1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1
-1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1

1 个答案:

答案 0 :(得分:2)

我建议您将read whole lines放入一个字符串中,然后将该字符串放入std::istringstream中,并在std::istream_iterator的帮助下直接构造内部向量。

也许是这样的:

std::vector<std::vector<int>> input_vector;
std::string line;

while (std::getline(training, line))
{
    std::istringstream iss(line);
    input_vector.emplace_back(std::istream_iterator<int>(iss),
                              std::istream_iterator<int>());
}