String in Zeichen umwandeln?
-
Hallo,
ich möchte mal ein kleines Hang Man Spiel probieren und wollte mal wissen wie ich den String in _ umwandeln kann in C++, bsp:string Text = "HANG MAN";und so soll der String dann umgewandelt werden:
_ _ _ _ _ _ _vielen dank schonmal.
MfG
-
Hallo
Einfach durchgehen und alle gewünschten Zeichen über den []-Operator auf '_' setzen?
Übrigens gibt es einen wichtigen Unterschied zwischen string und String. Ersteres entspricht std::string aus dem C++ Standard, letzteres ist aus der VCL und gleichzusetzen mit AnsiString. Also bevor du Quellcode sehen willst must du erstmal klären was du für einen Stringklasse benutzt. Wenn es wirklich die Kleingeschriebene ist gehört das ins C++ Forum.
bis bald
akari
-
Achso, Sry ich bin tatsächlich im falschem Forum.
Dieser Thread kann verschoben werden in C++ Forum.zu meinem Problem, ich hab das mal so probiert:
using namespace std; int main(int argc, char* argv[]) { string Text = "HANG MAN"; int laenge = Text.length(); string Text2 = ""; int i; for (i=0; i<laenge; i++) { Text2 = Text2 + "_ "; } cout << Text2 << endl; system("pause"); return 0; }das funktioniert zwar, aber ich weiss nicht ob das so sinvoll ist.
Gibt es vieleicht andere möglichkeit das umzuwandeln?
Weil so wie ich das gemacht habe, wird berechnet wieviel Zeichen der String Text hat und in der For schleife wird Text2 die zeichen _ übergeben.MfG
-
Hallo
Nun ja sinnvoll ist es schon, wenn du wirklich für jeden Buchstaben aus Text noch ein extra Leerzeichen in Text2 einfügen willst, selbst für das Leerzeichen das bereits in Text ist.
Was das "Pos" dort in der Schleife soll weiß ich nicht, der Compiler wirds jedenfalls nicht mögen. Und das i brauchst du auch nicht vor der Schleife zu deklarieren, die Deklaration kannst du in den Schleifenkopf verlegen.Zu dem system("pause") solltest du dir mal der FAQ des Konsolenforum den Thread "Automatisches Schließen verhindern" anschauen.
bis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
void hang_man_word(const std::string& src, std::string& dest) { dest = src; for (std::size_t pos = src.find_first_not_of(' '); pos != std::string::npos; pos = src.find_first_not_of(' ', pos)) dest[pos] = '_'; } void hang_man_char(const std::string& sol, std::string& cur, char c) { for (std::size_t pos = src.find_first_of(c); pos != std::string::npos; pos = src.find_first_of(c, pos)) cur[pos] = c; } int main() { std::string solution("Hang man!"); std::string crypt; hang_man_word(solution, crypt); std::cout << crypt << std::endl; std::cout << "Tipp: " << std::flush; char try = ' '; std::cin >> try; hang_man_char(solution, crypt, try); std::cout << crypt << std::endl. }um es mal ganz einfach zu machen ... geht aber noch viel schöner!...
-
Vielen Dank.
Ich hatte Pos dort stehen gehabt weil ich etwas testen wollte, aber ich habs wieder entfernt.
Ich werde es dann mal probieren.EDIT: Vielen Dank (D)Evil, aber das sieht mir etwas kompliziert aus da ich noch nicht so lange in C++ Programmiere, aber ich werde es mal versuchen das zu verstehen.
MfG