使用getline更新对象似乎不起作用

时间:2014-12-10 14:26:29

标签: c++ class object cin getline

创建和使用类时,我的行为很奇怪。

我按顺序创建该类的多个实例 - 然后我创建了一些临时变量来提示用户输入一些数据,然后我使用基本的mututaor函数并将数据传递给对象的各个部分。我为第一个项目做了这个,然后是第二个,等等。

当这些personalData元素的声明是顺序的然后由于某种原因cin / getline语句跳过某些并且我无法正确输入所有数据时会发生什么。当我在语句之间展开它们创建了一个对象然后用户的输入然后更新,然后下一个对象它更好地工作但仍然不在100%的情况下。最后我发现为输入数据创建了不同的变量 - 我的临时变量也解决了问题,但是当我应该能够输入数据/更新现有数据时,必须创建十几个变量似乎很奇怪?

class personalData
{
private:
    string name;
    string address;
    int phone;
    int age;
public:
    void setname(string);
    void setadress(string);
    void setphone(int);
    void setage(int);
    string getname()const;
    string getadress()const;
    int getage()const;
    int getphone()const;
};

void personalData::setname(string n)
{ name=n; }
void personalData::setadress(string a)
{ address=a; }
void personalData::setphone(int p)
{ phone=p;}
void personalData::setage(int ag)
{age=ag;}

string personalData::getname()const
{return name;}
string personalData::getadress()const
{return address;}
int personalData::getage()const
{return age;}
int  personalData ::getphone()const
{return phone;}


int main()
{
personalData my;
personalData friendd;
personalData family; 

string n;
string a;
int p;
int g;

cout<<"enter your name";
getline(cin,n);
cout<<"enter your address:";
getline(cin,a);
cout<<"enter your phone:";
cin>>p;
cout<<"enter your age";
cin>>g; 

my.setname(n);
my.setadress(a);
my.setphone(p);
my.setage(g);   

cout<<"enter your friend's name";
getline(cin,n);
cout<<"enter your friend's address:";
getline(cin,a);
cout<<"enter your friend's phone:";
cin>>p; 
cout<<"enter your friend's age";
cin>>g;

 friendd.setname(n);
 friendd.setadress(a);
 friendd.setphone(p);
 friendd.setage(g);


cout<<"enter your family member's name";
getline(cin,n);
cout<<"enter your family member's address:";
getline(cin,a);
cout<<"enter your family member's phone:";
cin>>p; 
cout<<"enter your family member's age";
cin>>g;

family.setname(n);
family.setadress(a);
family.setphone(p);
family.setage(g);

cout<<"my name"<<my.getname()<<endl;
cout<<"my address"<<my.getadress()<<endl;
cout<<"my phone"<<my.getphone()<<endl;
cout<<"my age"<<my.getage()<<endl;

// more cout statements with objects.getData ... 
return 0; 
}

对于长篇代码抱歉,我陷入困境,无法弄清问题是什么。 感谢。

0 个答案:

没有答案