Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Hey, Wow das funktioniert, Danke! Allerdings ist das Thema damit denke ich nicht beendet, denn es scheint ja noch mehr Möglichkeiten zu geben!Zum Vergleichen kannst du auch die Funktion strcmp verwenden. Damit geht das recht einfach. Alternativ gibt es auch davon Varianten die Groß-/Kleinschreibung ignorieren oder auch die Unicode-Variante der Funktion. Mehr Infos dazu findest du z.B. hier: http://msdn.microsoft.com/de-de/library/…e(v=vs.90).aspx
Ich habe mal deinen Code entsprechend angepasst (aber nicht getestet):
Quellcode
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream> using namespace std; int main () { char chName [20]; cout << "Dein Name: "; cin.get (chName, 19); if (strcmp(neededName, chName) == 0) cout << "Hallo, Hans!"; else cout << "Falsche eingabe!"; return 0; }
Wenn du es natürlich richtig Hardcore machen möchtest, dann Vergleichst du selbst in einer Schleife jeden Buchstaben. Aber warum das Rad neu erfinden
Ja, das schon aber ich hatte ja keine Ahnung, wie man das verwendet natürlich danke ich trotzdem. Denn das ich nicht weiß wie man das verwendet is ja nicht deine schuldHey, Wow das funktioniert, Danke! Allerdings ist das Thema damit denke ich nicht beendet, denn es scheint ja noch mehr Möglichkeiten zu geben!Zum Vergleichen kannst du auch die Funktion strcmp verwenden. Damit geht das recht einfach. Alternativ gibt es auch davon Varianten die Groß-/Kleinschreibung ignorieren oder auch die Unicode-Variante der Funktion. Mehr Infos dazu findest du z.B. hier: http://msdn.microsoft.com/de-de/library/…e(v=vs.90).aspx
Ich habe mal deinen Code entsprechend angepasst (aber nicht getestet):
Quellcode
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream> using namespace std; int main () { char chName [20]; cout << "Dein Name: "; cin.get (chName, 19); if (strcmp(neededName, chName) == 0) cout << "Hallo, Hans!"; else cout << "Falsche eingabe!"; return 0; }
Wenn du es natürlich richtig Hardcore machen möchtest, dann Vergleichst du selbst in einer Schleife jeden Buchstaben. Aber warum das Rad neu erfinden
Ist ja nicht so, als hätte ich strcmp eine Seite zuvor bereits präsentiert...
Zitat
Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.
Ich habe mich angestrengt, nur habe ich mich erst auf std::string konzentriert und dahin recherchiert. Wenn du den Code von alchy meinst, dann hat er auch alles geklärt. Allerdings muss ich zugeben, dass ich auf einige Dinge trotzt suche und den Kopf anstrengen nicht komme.Natürlich ist es nicht meine Schuld.
Es ist deine Aufgabe dich darüber zu informieren, man kaut ja nicht alles vor. Außerdem ist dort auch eine Beispielcode. Der hätte eig. alles sagen müssen.
Zukünftig solltest du dich näher mit den Informationen die man dir gibt auseinandersetzen und selbst den Kopf etwas anstrengen, denn irgendwann hast du ein Problem, was dir niemand vorkauen kann.
Zitat
Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.
Ja, ich werd nochmal versuchen mich da reinzuarbeiten, denn es scheint wirklich besser geeignet zu sein.Da ich mir nicht ganz sicher bin, welche Lösung du jetzt genau benutzt, möchte ich dir einmal mehr Nahelegen, std::string zu benutzen. Der Code schreibt sich einfacher und ist wesentlich robuster. Mit char-Arrays kann man vieles hinschreiben und kompilieren, was totaler Blödsinn ist, bei std::string ist das fast unmöglich. Ich bin damals komplett darauf umgestiegen, als mein Programm mal wieder wegen eines zu kleinen char-Arrays abgestürzt ist - und bin seit dem glücklich.
Zitat
Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.
Ich habe deinen Quellcode mal auf Ideone laufen lassen:
http://ideone.com/Bc37Du
Sieht so aus, als ob er dort funktioniert. Ich denke, ich weiß auch warum. Du übergibst getline als Delimiter ein '\n'. Unter Windows wird der Zeilenumbruch als "\r\n" codiert. Deshalb steht in dem String ein "Hans\r" und das ist natürlich nicht das selbe wie "Hans". Lass mal den Delimiter von getline weg, er ist eh optional, dann sollte es auch so funktionieren.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main () { std::string passwd; getline(cin, passwd);//error C3861: "getline": Bezeichner wurde nicht gefunden. if(passwd == "abcdef")//error C2678: Binrer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'std::string' akzeptiert { // (oder keine geeignete Konvertierung mglich) cout<<"Access allowed"; } return 0; } |
Zitat
Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.
Werbeanzeige