fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <string>
  5.  
  6. // Liste der bekannten Substrings
  7. const std::map<int, std::vector<std::string>> mTeilstrings = {
  8. {1, {"[8A]", "[UKE]"}},
  9. {2, {"[Dings da]", "[DingsBums]"}},
  10. {3, {"[GF]", "[MOD]", "[MOD3]", "[MOD6]"}},
  11. {4, {"[Weiss]", "[Rot]", "[Orange-Blau]"}}
  12. };
  13.  
  14.  
  15. auto parse_line(std::string line,
  16. const std::map<int, std::vector<std::string>> &substring_groups)
  17. {
  18. std::vector<std::pair<std::string, int>> result;
  19. for (auto const& kv : substring_groups)
  20. {
  21. for (auto const &substring: kv.second)
  22. {
  23. if (line.find(substring) != std::string::npos)
  24. result.push_back(std::make_pair(substring, kv.first));
  25. }
  26. }
  27. return result;
  28. }
  29.  
  30. int main()
  31. {
  32. for(std::string line; std::getline(std::cin, line);)
  33. {
  34. auto substring_pairs = parse_line(line, mTeilstrings);
  35. std::cout << "Zeile \"" << line << "\" wird zerlegt in {";
  36. for (auto pair: substring_pairs)
  37. std::cout << "(\"" << pair.first << "\", " << pair.second << "), ";
  38. std::cout << "}\n";
  39. }
  40. }
Success #stdin #stdout 0s 5328KB
stdin
[8A][Dings da][Orange-Blau]
[MOD][Weiss][UKE]
[GF][MOD3][Dings da]
[MOD][Black][UKE]
[GF][MOD3][Dings da][GF][MOD3][Dings da]
stdout
Zeile "[8A][Dings da][Orange-Blau]" wird zerlegt in {("[8A]", 1), ("[Dings da]", 2), ("[Orange-Blau]", 4), }
Zeile "[MOD][Weiss][UKE]" wird zerlegt in {("[UKE]", 1), ("[MOD]", 3), ("[Weiss]", 4), }
Zeile "[GF][MOD3][Dings da]" wird zerlegt in {("[Dings da]", 2), ("[GF]", 3), ("[MOD3]", 3), }
Zeile "[MOD][Black][UKE]" wird zerlegt in {("[UKE]", 1), ("[MOD]", 3), }
Zeile "[GF][MOD3][Dings da][GF][MOD3][Dings da]" wird zerlegt in {("[Dings da]", 2), ("[GF]", 3), ("[MOD3]", 3), }