我的代码运行正常,但当我将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');
时,它无缘无故地跳过该语句并转到下一个语句。不知道发生了什么,请复制并粘贴代码,你就明白了。
答案 0 :(得分:0)
它是这样设计的。在C ++中std::cin >> str;
读取流中的下一个单词。更具体地说,它读取下一个标记,并且标记由空格分隔,因此它们有效地代表一个单词。
使用getline
功能输入多个单词。