私は次の構造体を持っています:
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
。たとえば、入力が次の場合:
リー・ゴズウェル・ロード
出力はperson.name
= "Lee" およびperson.address
= "Goswell" になります。私が欲しいのは、基本的にアドレス全体を読み取る機能です。この問題を次のように解決しようとしましたが、アドレスが暗黙的に変更されるため、正しいかどうかはわかりません。
std::istream &read(std::istream &is, Person &person){
is >> person.name;
std::getline(std::cin, person.address);
return is;
}
別の関数を作成する必要があると言う前に考慮すべきもう 1 つのことは、名前とアドレスの両方を読み取る 1 つの関数を作成することです。