c .get()不起作用

cin.get() not working?

本文关键字:不起作用 get      更新时间:2023-10-16

我是第一次从PHP使用c++。我在摆弄一些代码。据我所知,cin.get();应该阻止窗口关闭,直到我按下一个键,但由于之前的代码,它似乎不工作,我不知道问题是什么。下面是我的代码:

#include <iostream>
#include <cstdlib>
using namespace std;
int multiply (int x, int y);
int main ()
{
    int x;
    int y;
    cout << "Please enter two integers: ";
    cin >> x >> y;
    int total = multiply(x, y);
    cout << total;
    cin.get();
}
int multiply (int x, int y) {
    return x*y;
}

放一个

cin.ignore(numeric_limits<streamsize>::max(),'n')

>> x >> y;之后(或在cin.get()之前)。

这将刷新cin的缓冲区并删除仍然存在的挂起的n,因为您的cin读取x和y,但也读取最后一个返回(在y之后)。这将在调用cin.get()时读取。如果您刷新缓冲区,cin.get()将看到一个空缓冲区,一切都很好。

您可以使用

cin.ignore(256,'n');

在最后一个

之前
cin.get();

这将丢弃作为读取x和y的一部分而输入的无意的'n'。页面停止关闭,直到按下所需的另一个键。

它读取仍然存在于输入流中的换行符,因为之前的读取可以从流中提取它。

看到这个:

cin >> x >> y;

它只读取两个整数,但不读取按下按钮时输入的换行符