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

C++程序中getline无法读取多行输入的问题排查

C++多行输入读取异常的修复方案

你的程序出现问题的核心原因是for循环语句末尾多了一个分号,这个分号会让for循环成为一个空循环:

for (i = 0; i < N; i++); // 这里的分号是错误根源

程序会直接执行完N次空循环,此时变量i的值已经等于N(比如输入3时,i最终是3)。之后只会执行一次getline读取输入,然后输出结果,所以你输入第一行后程序就结束了。

修复后的代码如下:

#include <iostream>
#include <string>
using namespace std;

int main(void){
    int N, i;
    string inptstr, temp;

    getline(cin, temp);
    N = stoi(temp);

    // 移除for循环末尾的分号,并用大括号包裹循环体
    for (i = 0; i < N; i++) {
        getline(cin, inptstr);
        cout << "Line entered no. " << i+1 << ": " << inptstr << endl;
    }
    
    return 0;
}

额外补充一个细节:你原来的输出中i从0开始计数,输入3时第一次循环会显示Line entered no. 0,如果需要从1开始计数,可以把输出里的i改成i+1,就像上面代码中那样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:12