+Wczytywanie: http://melpon.org/wandbox/permlink/4LrFqIIwXSjt7dPT
Czyli...
Struktura pod to sztywniactwo (Serio, tylko abcd? Może kiedyś będzie potrzebne tylko ab? albo aż do f?
struct quiz_item{
string question;
struct variant_answers{
string a, b, c, d;
} variants;
};
Cały zbiór sztywniactwa:
using quiz_items = vector<quiz_item>;
Wczytywanie (Pilnowaniem numerków możesz się zająć, jeśli bardzo Ci przeszkadza ich ignorowanie):
quiz_items load_quiz_items(istream &in){
quiz_items result;
regex expr(R"((\d+).\s+(.+)?\s+a\)\s+(.*)\s+b\)\s+(.*)\s+c\)\s+(.*)\s+d\)\s+(.*)\s+)");
const size_t req_matches_count = expr.mark_count()+1;
while(in){
string data, line;
box(4).times().perform([&]{
getline(in, line);
data += line + " ";
});
smatch match;
regex_match(data, match, expr);
if(match.size() != req_matches_count){
throw runtime_error("Invalid quiz item");
}
result.push_back({match[1+1], {match[1+2], match[1+3], match[1+4], match[1+5]}});
}
return result;
}
Baw się dobrze.
<font size="1">PS. Chciałem zrefaktoryzować to wczytywanie, ale skoro po wrzuceniu wygląda zwięźle, to nie będę strzępił palców.</span>