Vectoren sortieren, Zahlen erkennen
-
Ich hätte den Regex so gemacht:
if (!std::getline(is, str, ';')) // der Regex kümmert sich um Leerzeichen drum rum return is; // \d: [0-9], \s: [[:space:]], +?: Non-greedy matching, ^ und $: alles anschauen, keinen Substring suchen static const std::regex reg(R"(^\s*(.+?)(\s+s(\d+)e(\d+))?(\s*/final)?\s*$)"); std::smatch match; if (!std::regex_match(str, match, reg)) assert(false); // always matchesDein Regex schlägt fehl bei z.B. "prison s4e24 break s4e24;".
-
Hier noch der Rest vom Code:
s.name_ = match[1]; if (match[2].matched) { s.staffel_ = std::stol(match[3]); s.episode_ = std::stol(match[4]); } else { s.staffel_ = s.episode_ = 0; } s.final_ = match[5].matched; return is;
-
Geht bei mir gar nicht.
Er findet die Namen der Serien nicht. Außerdem verstehe ich dein Regex nicht wirklich "(^\s*(.+?)" was macht das?
Was bewirkt das Doller Zeichen?
Mit den assert bekomme ich ein Laufzeit Fehler:File: main.cpp, Line 41 Expression: falseLine 41:
assert(false); // always matches"prison s4e24 break s4e24;"
So ein Format sollte nicht vorkommen.
if (!std::getline(is, str, ';')) // der Regex kümmert sich um Leerzeichen drum rum
Hab vergessen zu sagen das nach den ';' Kommentare kommen.
Trotzdem Danke.