c++ - 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()
?
解决方案
推荐阅读
- javascript - ReferenceError:未定义学生
- algorithm - 估计最大值 在最坏的情况下,可以将具有节点容量的边数添加到图中
- google-chrome-devtools - manifest.json 显示属性的浏览器选项无效
- php - 通过 AWS Cloudfront 安装 SSL 后,会话变量未设置
- wordpress - 使用 YAML 文件 -docker 将文件从主机加载到 docker 卷中
- c# - 使用“this”关键字不会将包名获取到 Startservice()
- c# - 如何从作为 UWP 运行的 WPF 应用程序处理文件激活?
- r - 用于 wilcoxon 检验的两个 Stat 函数之间的区别
- swift - FSCalendar 'didSelect'-事件触发太晚?
- r - 将重新计算的子集绑定到一个管道链中的原始数据帧