Sagen wir, ich habe viele boolesche Variablen (Ich versuche ein textbasiertes Adventurespiel zu machen und ich werde den Pfad benötigen, um abhängig von den gewählten Optionen zu divergieren), gibt es eine einfache Möglichkeit zu überprüfen, ob eine gegebene Zeichenkette gleich ist ein Name einer initialisierten Variable oder ein Mitglied einer initialisierten Struktur? (So dass ich zum Beispiel die Variable von false zu true ändern kann?)Wie überprüft man die Existenz einer Variablen oder eines Members einer Struktur?
Antwort
Ein schnelles Beispiel für die Verwendung von std::map
, um ein Monster zu bekämpfen.
std::map<std::string, bool> flags;
definiert und weist eine Liste von benannten Flags zu, die wahr sein können oder nicht. Diese Liste kann
if (flags["key"])
sieht in flags
verwendet werden, um festzustellen, ob „Schlüssel“ existiert. Wenn dies der Fall ist, wird der zugeordnete Wert (true
oder false
) zurückgegeben. Wenn es nicht existiert und dies ein großer Unterschied ist, wenn Sie mit Java vertraut sind, wird "Schlüssel" erstellt und auf den Standardwert gesetzt (false
in diesem Fall).
#include <iostream>
#include <map>
void slaymonster(std::map<std::string, bool> & flags)
{
//check if hero has sword of monster slaying
if (flags["has sword of monster slaying"])
{
flags["monster slain"] = true; // sets key "monster slain" to true so
// hero can do stuff that requires
// monster to have been slain
std::cout << "Thou hast slain the monster!\n";
}
else
{
std::cout << "Thou hast been slain by the monster!\nInsert coin to continue.\n";
}
}
int main()
{
std::map<std::string, bool> flags;
std::cout << "Try to slay monster before finding sword\n";
slaymonster(flags);
std::cout << "\nHero finds sword of monster slaying\n";
flags["has sword of monster slaying"] = true;
std::cout << "Try to slay monster after finding sword\n";
slaymonster(flags);
std::cout << "\nHero is mugged and loses sword of monster slaying\n";
flags["has sword of monster slaying"] = false;
std::cout << "Try to slay monster after losing sword\n";
slaymonster(flags);
}
Ausgang:
Try to slay monster before finding sword
Thou hast been slain by the monster!
Insert coin to continue.
Hero finds sword of monster slaying
Try to slay monster after finding sword
Thou hast slain the monster!
Hero is mugged and loses sword of monster slaying
Try to slay monster after losing sword
Thou hast been slain by the monster!
Insert coin to continue.
Das ist großartig! Sehr gut erklärt und ein sehr relevantes Beispiel auch! Vielen Dank! – Nex
- 1. Wie überprüft man die Existenz einer Datei im Csh-Skript?
- 2. Wie überprüft man die ersten drei Zeichen in einer Variablen?
- 3. Wie überprüft man die Berechtigungen eines Benutzers mit einer Websitesammlung?
- 4. Wie kann ich die Existenz einer Umgebungsvariablen überprüfen?
- 5. Wie überprüft man die Existenz einer Vorlage vor dem Rendern in Zend Expressive?
- 6. Wie überprüft man die Existenz einer Zeile in SQLite mit Python?
- 7. Wie erkennt man die Existenz einer Klasse mit SFINAE?
- 8. Wie man die Ausgabe eines Befehls einer Makefile-Variablen zuweist
- 9. Wie überprüft man die Tiefe eines Objekts?
- 10. Wie überprüft man die Existenz eines Get-Parameters in der Flasche
- 11. Überprüfen Sie die Existenz einer HashMap Schlüssel
- 12. Wie überprüft man alle Klassen unter oder mit einer Klasse?
- 13. Shorthand-Bedingung zum Definieren einer Variablen basierend auf der Existenz einer anderen Variablen in PHP
- 14. Testen auf die Existenz eines Feldes in einer Klasse
- 15. wie man den Wert eines Funktionszeigers aus einer Struktur ausdruckt
- 16. Wie überprüft man, ob Benutzer die Seite auf einer Root-Seite oder einer anderen Seite besuchen?
- 17. Wie verwendet man Fgets in einer Struktur?
- 18. Festlegen des Tag-Members eines ListBoxItem in einer Datatemplate?
- 19. Zerstörung einer Variablen oder eines Arrays in C#
- 20. Simulieren eines virtuellen statischen Members einer Klasse in C++?
- 21. Verwenden eines statischen Members einer Klasse für einen abgeleiteten Typ?
- 22. Wie verwendet man Variablen in einer Delegatfunktion
- 23. Aufruf Struktur Feld von einer String-Variablen
- 24. Wie erstellt man eine Klassenerweiterung einer Struktur?
- 25. Dereferenzieren eines Members Zeiger
- 26. Wie man Objekt und Struktur von einer vorhandenen Struktur ändert?
- 27. C Wie kann ich auf Strukturelemente einer Struktur zugreifen, die Teil eines Strukturarrays in einer anderen Struktur ist?
- 28. Wie kann man nach der Existenz einer DB suchen?
- 29. Wie überprüft man, ob eine Struktur initialisiert ist?
- 30. Wie überprüft man, ob eine bestimmte Zeichenfolge in einer Variablen ist, die Byte-Variable
Nope. Sobald das Programm kompiliert ist, sind alle diese schönen Variablennamen verschwunden und durch Speicher-Offsets ersetzt. – user4581301
Vielleicht möchten Sie eine 'std :: map' in der Klasse? –
NathanOliver
oder 'std :: set'. –
Jarod42