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