C ++ - ввод построчно до пустой строки и сохранение в массив изменяет предыдущие элементы массива - PullRequest
0 голосов
/ 09 мая 2020

Я пишу программу на 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()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...