C++ cin 在 while 循环中使用,但控制台屏幕未保持

标签 c++ c++11 visual-c++

我使用 cin 作为 while 循环的条件,它接受整数,除非输入文件结尾或字符。但是控制台窗口在结果之后就消失了。怎么才能长屏

#include<iostream>

using namespace std;

int main() {


    int num = 0, sum = 0;

    while (cin >> num) {
        sum += num;
    }


    cout << "Sum is: "
        << sum
        << endl;

    cout << endl;

    cin.get();
    return 0;
}

最佳答案

cin.get() 将使用换行符,该换行符是您使用“enter”提交的最后一个数字留在输入流中的。因此,下一个 cin.get()(您希望在输出控制台消失之前等待下一个用户输入)不会等待其他输入,而是会立即返回。

要解决此问题,您可以忽略(参见 cppreference/ignore)任何内容,直到(并包括)缓冲区中的下一个新行,然后再读取下一项:

int main() {
    int a;

    cin >> a;

    // do something with a, write to console, ...

    cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');        
    cin.get();
}

关于C++ cin 在 while 循环中使用,但控制台屏幕未保持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517519/

相关文章:

c++ - 带类的标签分发

c - 我如何在 c 中为以下要求创建递归目录?

C++继承函数中的默认操作

c++ - ATL COM DLL 适用于 C# 但不适用于 C++

c++ - 如何在 Windows 上使用 g2o 框架进行图形优化 (SLAM)?

c++ - 强制 SFINAE 使用不同的返回类型

c++ - 为什么 lock_guard 可以通过 unique_lock 得到一个已经锁定的互斥体?

c++ - 如何在构造函数调用中使用初始化列表来配置 `std::vector<std::vector<MyClass>>`?

c++ - 从头开始在汇编中编写 for 循环

c++ - 如何在c或c++中循环生成随机256位十六进制?