Lee_Serena 2024-04-13 16:54 采纳率: 14.3%
浏览 153

cin为什么按回车之后不显示输出,直接换行了啊

运行程序之后,输入一行整数,然后按回车,但是为什么按回车之后不显示输出,直接换行了啊

img

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-13 16:54
    关注

    引自免费微信小程序:皆我百晓生

    在C++中,std::cin 读取输入时默认只读取一个字符,直到遇到空格、制表符或换行符才会停止读取,并将这个值赋给变量。因此,在你的代码中,当你按下回车键后,std::cin 会读取到一个换行符('\n'),而这个换行符并没有被存储到 x 变量中,而是留在了输入缓冲区。

    为了解决这个问题,你需要在读取完一个整数后清除输入缓冲区中的换行符。你可以通过在读取操作后面添加一个额外的 std::cin.ignore() 来实现这一点,如下所示:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int main() {
        vector<int> v;
        int x = 0;
        
        while (cin >> x) {
            v.push_back(x);
            // 清除输入缓冲区中的换行符
            cin.ignore();
        }
        
        vector<int>::iterator it;
        for (it = v.begin(); it != v.end(); ++it) {
            cout << *it << " ";  // 在每个数字之间加上空格,使输出更易读
        }
        cout << endl;  // 输出一个换行符,使得输出看起来整洁
    
        return 0;
    }
    

    在这个修改后的版本中,我在每次读取完一个整数后调用了 cin.ignore() 函数,它会跳过输入流中的下一个字符(在这里是换行符)。这样,当循环结束并开始打印向量元素时,就不会因为之前的换行符而直接换行了。同时,我在输出每个元素后加了一个空格,使输出更易读。最后,为了保持输出格式的一致性,我在循环结束后添加了一个换行符。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月13日