我有以下結構:從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