C++生手的困惑-cin的問題
C++新手的困惑-cin的問題
程序如下所示
#include <iostream>
int main()
{
using namespace std;
int num;
char name[20];
cout << "Enter your num:";
cin >> num;
cout << "Enter your name:";
cin.getline(name,20);
return 0;
}
问题:
当我输入完数字+回车后,不给输入名字的机会?为什么?
这个cin确实让人比较头痛的。请大侠指教一下啊
刚入门的人伤不起。
------解决方案--------------------
------解决方案--------------------
楼主编程多了后,就会发现输入时的确定回车有时候会影响到下面的输入,当你敲回车的时候,回车进入输入缓存,下面的cin将从缓从中读出这个回车,而影响到输入结果,所以当这种情况发生时,就应该尝试在其中加入getchar(),来将这多余的回车先消耗掉。希望对你有帮助,我刚开始学习编程也经常遇到这种类似情况,等遇到的多了有了经验后就很自然地想到解决办法了,加油。。。。。
------解决方案--------------------
你说的对,其实解决办法的比较多的,只要是从缓冲区对入的函数基本都可以起到这个效果,总而言之只要消耗掉回车就可以了。。。。
程序如下所示
#include <iostream>
int main()
{
using namespace std;
int num;
char name[20];
cout << "Enter your num:";
cin >> num;
cout << "Enter your name:";
cin.getline(name,20);
return 0;
}
问题:
当我输入完数字+回车后,不给输入名字的机会?为什么?
这个cin确实让人比较头痛的。请大侠指教一下啊
刚入门的人伤不起。
------解决方案--------------------
#include <iostream>
using namespace std;
int main()
{
using namespace std;
int num;
char name[20];
cout << "Enter your num:";
cin >> num;
cout << "Enter your name:";
getchar(); // 加上这行试试,缓冲区里有个回车,吃掉先
cin.getline(name,20);
return 0;
}
------解决方案--------------------
楼主编程多了后,就会发现输入时的确定回车有时候会影响到下面的输入,当你敲回车的时候,回车进入输入缓存,下面的cin将从缓从中读出这个回车,而影响到输入结果,所以当这种情况发生时,就应该尝试在其中加入getchar(),来将这多余的回车先消耗掉。希望对你有帮助,我刚开始学习编程也经常遇到这种类似情况,等遇到的多了有了经验后就很自然地想到解决办法了,加油。。。。。
------解决方案--------------------
你说的对,其实解决办法的比较多的,只要是从缓冲区对入的函数基本都可以起到这个效果,总而言之只要消耗掉回车就可以了。。。。