我刚开始使用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;
}
答案 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();
在获得输入后放置它以避免控制台退出。