假设我有一个包含五个数据成员的结构:
struct Info {
std::string name;
std::string last_name;
std::string school;
int age;
int dob;
}
格式的字符串:Joe Bob University 18 050797其中每个字段代表我想要读入结构的每个成员的内容。我想确切地知道,结构中的每个数据成员都被读入一个值,并且读取没有失败。是否有一种优雅的方式来实现这一目标?
void fill_info(const std::string &line, Info *fields) {
istringstream ss(line);
ss >> fields->name;
ss >> fields->last_name;
ss >> fields->school;
ss >> fields->age;
ss >> fields->dob;
}
答案 0 :(得分:2)
您可以在一行中执行插入并测试流
if(!(ss >> fields->name >> fields->last_name >>\
fields->school >> fields->age >> fields->dob))
std::cout << "error reading the data";
如果您想确切地查看哪个字段失败,您可以测试每个单独的插入。然后,you can validate the input。