读书人

C++生手的困惑-cin的

发布时间: 2013-10-13 14:03:53 作者: rapoo

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确实让人比较头痛的。请大侠指教一下啊
刚入门的人伤不起。

[解决办法]


#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(),来将这多余的回车先消耗掉。希望对你有帮助,我刚开始学习编程也经常遇到这种类似情况,等遇到的多了有了经验后就很自然地想到解决办法了,加油。。。。。
[解决办法]
引用:
Okay
It solve my problem.. Thanks...
Are there some another ways to fix it..

The head of program should add #include <stdio.h>.
Thanks for your help. MaxMin...

A strange input approach..
cin.get() has the same effect.

你说的对,其实解决办法的比较多的,只要是从缓冲区对入的函数基本都可以起到这个效果,总而言之只要消耗掉回车就可以了。。。。

读书人网 >C++

热点推荐