我有以下结构:从Istream中读取,如何先读取一个单词然后读取整行,然后返回?
struct Person{
std::string name;
std::string address;
std::string& personName(){ return name; }
std::string& personAddress(){return address;}
};
演习是写读功能将读取的姓名和地址。例如,我第一次写的功能是这样的:
std::istream &read(std::istream &is, Person &person){
is >> person.name >> person.address;
return is;
}
但是这个功能未能采取比address
一个字。例如,如果输入是:
李Goswell路
的输出将是person.name
= “李” 和person.address
= “Goswell”。我想要的是基本上读取整个地址的功能。我曾尝试如下解决这个问题,但我不知道这是正确的,因为地址被隐式变化:
std::istream &read(std::istream &is, Person &person){
is >> person.name;
std::getline(std::cin, person.address);
return is;
}
另一件事说我应该写独立的功能之前首先要考虑的任务是写一个函数读取名称和地址。
'std :: getline(is,person.address)'。但是,如果您要混合运算符>>和std :: getline,则cin.ignore(std :: numeric_limits :: max,'\ n')。 –
2015-02-11 13:00:47
@remyabel我想了解'ignore'的动机是什么? – 2015-02-11 14:24:46