Code einfacher machen!
-
Hallo!
Da ich ja echt neu bin in C++ hab ich vielleicht eine zu einfache Frage für euch, aber mich beschäftigt sie schon und ich kann irgendwie keine echte Lösung finden...
Also ich lese aus einer Datei einen Wert aus. Dieser Wert z.B. Typ int steht für einen string. Wie kann ich jetzt den String ausgeben ohne switch/case zu benutzen.
int wert = 0; readfile(wert); switch (wert) { case 0: printf ... case 1: printf ... case 2: ... }
Das Problem ist nämlich das da ziemlich viele case zusammenkommen, wenn wert bis zu 100 werden kann. Irgendwie muss das einfacher gehen, davon bin ich überzeugt!!!
Wie? Würde da ein array helfen?
atzplzw
-
Schau Dir mal std::map an.
std::map<int,std::string> temp;
temp.insert(make_pair(0,"Text für 0");
temp.insert(make_pair(1,"Text für 1");
temp.insert(make_pair(2,"Text für 2");Dann kannste mit temp[0] zugreifen. Wenn ein Wert nicht vorhanden ist müsste "" zurück gegeben werden. Alternativ kannste auf temp.find(0) verwenden und auf temp.end() prüfen.
-
temp[0] = "Text für 0";
Sieht doch viel schicker aus...
Wenn du für jede Zahl zwischen 0 und 100 einen String brauchst, kannst du dafür wirklich ein Array nehmen:const std::string strings[] = { "Müsli", "Orangensaft", "Äpfel", "Vollkornbrot", ... }; const std::size_t anzahlStrings = sizeof(strings) / sizeof(std::string); ... unsigned n; /* n lesen */ if (n >= anzahlStrings) /* Fehler */ else str = strings[n];