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

5 Antworten

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

leoquestiongoon 
Fragesteller
 16.09.2016, 21:31

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. 

1
Nube4618  16.09.2016, 21:37
@leoquestiongoon

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. 

1
Kieselsaeure  16.09.2016, 21:34

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

0
969669  16.09.2016, 21:36
@Kieselsaeure

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.

1

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üß
adenosi  17.09.2016, 00:44

* musst noch include und ISO c++11

#include <string>
#include <unordered_map>
0

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

leoquestiongoon 
Fragesteller
 16.09.2016, 21:23

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. 

0
Kieselsaeure  16.09.2016, 21:32

wie es aussieht kannst du nichtmal nen string deklariern und definieren

2
MindShift  16.09.2016, 22:21

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; }

0

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.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium

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"