2011-12-14 59 views
0

我第一次从PHP使用C++。我正在玩一些代码。据我的理解,cin.get();是假设停止窗口关闭,直到我按下一个键,但它似乎没有工作,因为它之前的代码,我不知道问题是什么。这里是我的代码: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; 
} 
+2

你能解释一下你的意思吗?“停止页面关闭” – 2011-12-14 05:30:29

+0

@Tyler只是使用getch();而不是cin.get(); – StackFlowed 2011-12-14 05:39:04

回答

4

将一个

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

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

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

1

它读取输入流中仍然存在的换行符,因为上一次读取可能会从流中提取它。

看到这个:

cin >> x >> y; 

它只读取两个整数,但它不会读,当你按下按钮能以输入换行符。

3

您可以使用

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

只是最终

cin.get(); 

这会放弃之前无意 '\ n' 键在作为读取x和y的一部分。页面从关闭停止,直到按需按下额外的按键。