【发布时间】:2015-12-04 10:26:40
【问题描述】:
我的代码运行良好,但是当我将cin>>new_person.address 更改为getline 时,我在运行它时遇到了错误。
#include <iostream>
using namespace std;
struct person
{
string name;
string address;
int phone_number;
};
person getNewPerson()
{
person new_person;
cout<<"Enter a name ";
cin>>new_person.name;
cout<<"Enter an address ";
getline(cin, new_person.address, '\n');
cout<<"Enter a phone number ";
cin>>new_person.phone_number;
return new_person;
}
person printPerson(person a_person)
{
cout<<"This person name is: "<<a_person.name<<endl;
cout<<"His address is: "<<a_person.address<<endl;
cout<<"His phone number is: "<<a_person.phone_number<<endl;
}
int main()
{
person my_person=getNewPerson();
printPerson(my_person);
}
当我使用getline(cin, new_person.address, '\n'); 时,它会无缘无故地跳过该语句并转到下一个语句。不知道怎么回事,复制粘贴代码你就明白了。
【问题讨论】:
-
问题是我使用 cin 作为第一个字符串和 getline 作为第二个字符串。将两个字符串都设置为 getline 后,程序可以完美运行。
-
问题是我应该使用 cin.ignore();