为什么在我包含cin.get()后控制台关闭?

时间:2011-06-18 19:01:04

标签: c++ visual-studio-2010

我刚开始使用C ++ Primer Plus学习C ++,但我遇到了其中一个例子的问题。就像书中指示的那样,我在最后包括cin.get()以防止控制台自行关闭。但是,在这种情况下,除非我添加两个我不理解的cin.get()语句,否则它仍会自行关闭。我正在使用Visual Studio Express 2010.

#include <iostream>

int main()
{
    int carrots;

    using namespace std;
    cout << "How many carrots do you have?" << endl;
    cin >> carrots;
    carrots = carrots + 2;
    cout << "Here are two more. Now you have " << carrots << " carrots.";
    cin.get();
    return 0;
}

4 个答案:

答案 0 :(得分:15)

cin >> carrots;

此行在输入流中留下一个尾随换行符号,然后由下一个cin.get()使用。在此之前直接做一个简单的cin.ignore()

cin.ignore();
cin.get();

答案 1 :(得分:8)

因为cin >> carrots没有读取在排序整数后输入的换行符,并且cin.get()读取输入流中剩下的换行符,然后程序结束。这就是控制台关闭的原因。

答案 2 :(得分:4)

cin >> carrots;

读取int,但留下了换行符。

cin.get();

读取该换行符,程序结束。

答案 3 :(得分:2)

cin >> carrots;

获取一个整数输入,并在按下回车键后留下一个新行。

cin.ignore();

在获得输入后放置它以避免控制台退出。