Frage von leoquestiongoon, 48

C++ Eingabe: Name, Ausgabe: Wert der Variablen mit diesem Namen?

Der Benutzer gibt einen String ein, zum Beispiel: "Hallo." Ich habe auch eine Variable string Hallo = "Tschüss."

Wenn der Nutzer Hallo eingibt, soll Tschüss zurückgegeben werden, wenn er etwas anderes eingibt, soll nichts zurückgegeben werden.

Wie geht das?

Antwort
von 969669, 28

Ich habe dir mal so ein Programm geschrieben:

#include 
<iostream>

using namespace std;

int main()
{
string eingabe;
cin >> eingabe;
if(eingabe == "Hallo"){
cout << "Tschuess" << endl;
}else{
return 0;
}
}

In der if Abfrage überprüfst du einfach ob die Eingabe 'Hallo' ist

 und falls ja --> cout Tschuess, falls nicht wird 0 zurückgegeben

Kommentar von leoquestiongoon ,

Danke, aber ich habe mich falsch ausgedrückt, konkret geht es um das züchten von Monstern. Der User gibt zum Beispiel ein Cabuno-Oroto oder Utu-Mokto oder Retzi-Morinto (Das sollen jetzt alles Kombinationen von Monsternamen sein.) Und gleichzeitig habe ich viele Strings, z.B.
string Cabuno-Oroto = "Alex"
string Utu-Mokto = "Nevado"

Wenn der User eine Eingabe macht, soll also der Wert des Strings mit dem jeweiligen Namen ausgegeben werden. 

Kommentar von Nube4618 ,

Wenn du programmieren lernen willst, schliess dich in deine Kammer ein, PC, Kaffeemaschine, und Bücher und/oder Google. Dann bleib dran, bis du deine Aufgabe gelöst hast. So geht das. 

Kommentar von LeonardM ,

cin in der konstellation funktioniert meines wissens nach nur mit Datentyp int. für strings nimmt man getline oder irre ich mich

Kommentar von 969669 ,

Funktioniert einwandfrei, habs eben mal ausprobiert.

Cin funktioniert meines Wissens nach mit allen Datentypen, du musst nur weiter oben initialisieren. Getline geht natürlich auch, macht aber wenig Sinn wenn eh nur ein einziges Wort abgefragt wird.

Antwort
von triopasi, 21

Dafür solltest du eine Hashmap verwenden, bin mir nicht sicher OB das irgendwie gehts aber selbst wenn, dann macht man das nicht so. Niemals.

Antwort
von 969669, 21

Wenn du wirklich viele Daten hast, kannst du sie in eine Datenbank einspeichern und den Wert aus der entsprechenden Zeile auslesen.

Das heißt: Wert aus Zeile "Hallo" ist "Tschüss"

Antwort
von adenosi, 3

Du Möchtest anhand der Eingabe die Variable aussuchen deren Inhalt ausgegeben werden soll?

Dafür würde sich eine Hashmap gut eignen, HashMap<String, String>, vorrausgesetzt ist natürlich dass du immer nur einen Wert pro Variable zuweisen willst.

in c++ wär das:

std::unordered_map<string, string> map;
map["Hallo"] = "Tschüß";
string eingabe;
cin >> eingabe;
cout << map[eingabe]; //Ausgabe wär jetzt Tschüß
Kommentar von adenosi ,

* musst noch include und ISO c++11

#include <string>
#include <unordered_map>
Antwort
von MindShift, 28

Mit if/else clauses. Das kannst du im Internet nachlesen :)

Kommentar von leoquestiongoon ,

Nein, ich habe ganz viele strings, zum Beispiel:
string Hallo = Tschüss;
string Wie gehts = Gut, dir auch;

usw. 

ganz ganz viele, so das es mit if clauses zu umständlich wird. Der User gibt einen String ein und kriegt den Wert der Variablen zurück, die genau wie der string heißt. 

Kommentar von LeonardM ,

wie es aussieht kannst du nichtmal nen string deklariern und definieren

Kommentar von MindShift ,

Ich glaube nicht, dass das möglich ist. Mach es einfach mit einer switch-Abfrage, z. B. so: char eingabe[1000]; oder string eingabe; cin >> eingabe; switch(eingabe) { case "Hallo": cout << "Tschüss"; break; case "Wie gehts": cout << "Gut, dir auch?"; break; default: cout << "Falsche Eingabe."; break; }

Keine passende Antwort gefunden?

Fragen Sie die Community