You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ 从多行输入多整数存入2d array,二维数组无法更新如何解决

问题原因
  • stringstream初始化位置错误:你在循环外仅用初始的input值初始化了一次s,后续循环中通过getline读取到的新行内容完全没有更新到s中。第一次循环读取完s内的所有内容后,s会进入EOF(文件结束)状态,后续所有循环中的s >> u >> v >> weight都会直接返回false,不会执行Graph数组的赋值逻辑,自然无法更新二维数组。
  • 读取逻辑不匹配:你的外层循环本意是逐行读取输入内容,但现有逻辑没有将每行新读取的内容送入解析流,完全脱离了逐行读取的设计目标。
  • 额外注意:需要确认Graph数组的维度是否满足输入下标要求,你提供的输入中顶点下标最大值为5,因此Graph的行列数至少需要为6,否则下标越界也会导致赋值无效,同时要保证count的初始值为0。
修复后的代码
// 提前确认count初始值为0,Graph数组行列数≥6
while(count != numV){
    getline(cin, input);
    stringstream s(input); // 每次用新读取的行内容初始化stringstream
    while(s >> u >> v >> weight) {
        Graph[u][v] = weight;
    }
    count++;
}
核心修改说明
  • 将stringstream s的构造逻辑移动到getline之后,每次用刚读取到的一行输入内容初始化流对象,保证每次解析的是最新的输入行。
  • 每次循环构造新的stringstream对象会自动重置流状态,不需要手动处理EOF标识,避免后续解析失败。
  • 可选优化:如果输入存在空行或前置空白符,可在getline前添加空白符跳过逻辑,避免解析异常

内容的提问来源于stack exchange,提问作者bahnaynays

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:03