首页 > 解决方案 > C++ - 逐行输入直到空白行并保存到数组中会改变数组的先前元素

问题描述

我正在用 C++ 编写一个程序,它逐行读取输入,每行有一对 2 n=整数。例子:

1 10
100 200
201 210

阅读这些数字后,我试图将这些数字存储在二维数组中。代码是这样的:

#include <iostream>

using namespace std;

int main()
{
    int pairs[][2] = {};
    string x;
    int index = 0;
    while (getline(cin, x))
    {
        if (x == "")
        {
            break;
        }
        size_t pos = x.find(' ');
        pairs[index][0] = stoi(x.substr(0, pos));
        pairs[index][1] = stoi(x.substr(pos + 1));
        cout << index << ":" << pairs[index][0] << ", " << pairs[index][1] << endl;
        index++;
    }
    for (int i = 0; i < index; i++)
    {
        cout << i << ":" << pairs[i][0] << ", " << pairs[i][1] << endl;
    }
    return 0;
}

现在,当我只输入 1 行输入时,它可以正常工作。但是当我尝试输入多于 1 行的输入时,它会将输入存储到数组中,但不知何故,前一个元素被更改为一些奇怪的数字 {6422236, 3} 。我无法理解为什么会发生这种情况。是不是因为使用不当getline()

标签: c++arraysmultidimensional-arrayinput

解决方案


推荐阅读