使用istringstream将数据读入struct

时间:2015-05-27 05:47:48

标签: c++

假设我有一个包含五个数据成员的结构:

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;
}

1 个答案:

答案 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