【发布时间】:2015-04-11 20:41:07
【问题描述】:
我有以下结构:
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;
}
在说我应该编写单独的函数之前要考虑的另一件事,任务是编写一个函数来读取名称和地址。
【问题讨论】:
-
std::getline(is, person.address)。但是,cin.ignore(std::numeric_limits<std::streamsize>::max, '\n')如果您要混合使用operator>>和std::getline。 -
@remyabel 我想了解
ignore的动机是什么?
标签: c++ stream getline istream extraction-operator