cin.get()不工作?

时间:2011-12-14 05:22:00

标签: c++

我第一次从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;
}

3 个答案:

答案 0 :(得分:5)

放一个

cin.ignore(numeric_limits<streamsize>::max(),'\n')
>> x >> y;之后(或在cin.get()之前)

这将刷新cin的缓冲区并删除仍然存在的待处理\n,因为您cin读取x和y但也读取最后一个返回值(在y之后)。当您致电cin.get()时,会将其读入。如果刷新缓冲区cin.get()将看到一个空缓冲区,一切都很好。

答案 1 :(得分:3)

您可以使用

cin.ignore(256,'\n');

在最后的

之前
cin.get();

这会丢弃在读取x和y时键入的无意'\ n'。页面停止关闭,直到按下另一个按键。

答案 2 :(得分:1)

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

见:

cin >> x >> y;

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