输入中的错误
void Person::GetData()
{
cout<<"请输入个人详细信息:"<<endl;
cout<<"请输入您的姓名:";
cin.get(name,20);
cout<<"请输入你的年龄:";
cin>>this->age;
cout<<"请输入您的性别:";
cin>>sex;
cout<<"请输入您的电话号码:";
cin.get(telephone,30);
cout<<"请输入您的电子邮件地址:";
cin.get(this->EmailId,20);
}
当我在输入sex后,却没有提示电话号码的输入,请问原因?
问题点数:20、回复次数:13Top
1 楼jobs002(Oh! Office)回复于 2006-03-03 11:41:22 得分 0
高手帮帮忙
Top
2 楼cunsh(村少)回复于 2006-03-03 11:42:11 得分 0
你多贴几行呀Top
3 楼jobs002(Oh! Office)回复于 2006-03-03 11:45:24 得分 0
class Person
{ public :
Person();
~Person();
private:
}void Person::GetData()
{
cout<<"请输入个人详细信息:"<<endl;
cout<<"请输入您的姓名:";
cin.get(name,20);
cout<<"请输入你的年龄:";
cin>>this->age;
cout<<"请输入您的性别:";
cin>>sex;
cout<<"请输入您的电话号码:";
cin.get(telephone,30);
cout<<"请输入您的电子邮件地址:";
cin.get(this->EmailId,20);
}
Top
4 楼zzw820626(偶要分,偶要星星)回复于 2006-03-03 11:50:01 得分 0
sex什么类型阿?Top
5 楼jobs002(Oh! Office)回复于 2006-03-03 11:57:28 得分 0
char name[20];
int age;
char sex;
char telephone[30];
char EmailId[20];Top
6 楼zzw820626(偶要分,偶要星星)回复于 2006-03-03 12:05:14 得分 0
是不是输入了中文?Top
7 楼jobs002(Oh! Office)回复于 2006-03-03 12:10:48 得分 0
没有,最一般的情况,也没有输入空格
Top
8 楼jobs002(Oh! Office)回复于 2006-03-03 12:20:58 得分 0
#include <iostream.h>
class Person
{ public :
Person();
~Person();
void GetData();
void ShowData();
private:
char name[20];
int age;
char telephone[30];
char sex;
char EmailId[20];
};
void Person::GetData()
{
cout<<"请输入个人详细信息:"<<endl;
cout<<"请输入您的姓名:";
cin.get(name,20);
cout<<"请输入你的年龄:";
cin>>this->age;
cout<<"请输入您的性别:";
cin>>sex;
cout<<"请输入您的电话号码:";
cin.get(telephone,30);
cout<<"请输入您的电子邮件地址:";
cin.get(this->EmailId,20);
}
void main(void)
{ Person aMan;
aMan.GetData();
}
Top
9 楼willingbupt(buptcsdn)回复于 2006-03-03 12:41:50 得分 0
应该是cin.get()出了问题。你不用cin.get试试Top
10 楼zzw820626(偶要分,偶要星星)回复于 2006-03-03 13:06:30 得分 10
msdn上对get有这么一段解释:
After the function extracts an element that compares equal to _Delim, in which case the element is put back to the controlled sequence.
当遇到_Delim(默认 \n)时就返回,并把_Delim放回控制序列。
执行cin>>sex;后controlled sequence中有一个\n
然后get()碰到\n返回,并且把\n放回controlled sequence,
以后的get()同理。
可以这么修改:
void Person::GetData()
{
cout<<"请输入个人详细信息:"<<endl;
cout<<"请输入您的姓名:";
cin.get(name,20);
cout<<"请输入你的年龄:";
cin>>this->age;
cout<<"请输入您的性别:";
cin>>sex;
cin.get(); //添加
cout<<"请输入您的电话号码:";
cin.get(); //添加
cin.get(telephone,30);
cout<<"请输入您的电子邮件地址:";
cin.get(); //添加
cin.get(this->EmailId,20);
}
Top
11 楼bjstcm(快毕业了~~~)回复于 2006-03-03 13:14:06 得分 2
楼上的可以,,
也可以使用cin.ignore();Top
12 楼tygfr(Try to do!)回复于 2006-03-03 13:32:45 得分 8
将所有的cin.get(NAME,ARSIZE)改成cin.get(NAME.ARSIZE).get();
这是换行符问题,在每次cin.get()后,换行符还是留在输入队列中,所以会出现第一次输入后再进行第二次输入不正常(此时换行符还留在输入队列中)。而cin遇到enter会结束输入Top
13 楼tygfr(Try to do!)回复于 2006-03-03 13:34:06 得分 0
使用cin.get(NAME.ARSIZE).get()来清空换行符Top




