Wo liegt der Fehler?! Wer kann mir helfen?



  • @BitWax: nicht ganz...

    #include <cstdlib> 
    #include <iostream>
    #include <string> // für std::string 
    
    using namespace std; 
    
    int main() 
    { 
      std::string passwort; // hier std::string verwenden!
    
      cout << "Hallo!" << endl; 
      cout << endl; 
      cout << "Bitte geben sie Ihr Passwort ein: "; 
    
      cin >> passwort; 
    
      if(passwort == "bla" ) // weil du std::string benutzt funktioniert der Vergleich
      { 
        cout << "Loginbereich"; 
      }   
    
      else 
      {   
        cout << "Falsches Passwort!" << endl; 
      }   
    
      system("PAUSE");    
      return 0; 
    }
    


  • BitWax schrieb:

    Und dann in der if-Anweisung nicht 'passwort == "bla"' sondern "strcmp (passwort, "bla") == 0"

    Die std::string-Klasse bringt aber einen schönen Vergleichsoperator mit sich 😃



  • Ich hab mal ne Frage zu dem Code:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      char passwort[8] = "bla";  /* Was bringt die Zuweisung hier?
                                  * Mit cin>>passwort "überschreibt"
                                  * man passwort doch so wie so nochmal?!
                                  * Oder? */
    
      cout << "Hallo!" << endl;
      cout << endl;
      cout << "Bitte geben sie Ihr Passwort ein: ";
    
      cin >> passwort;
    
      if(passwort == "bla" )   // Die prüfung findet doch so wie so hier statt?!
      {
        cout << "Loginbereich";
      }  
    
      else
      {  
        cout << "Falsches Passwort!" << endl;
      }  
    
      system("PAUSE");   
      return 0;
    }
    


  • Die Zuweisung bringt gar nichts. Ich habe schon versucht ihm das zu erklären, aber naja.
    @ die anderen: JAJA IST JA GUT 🙂 🙂
    Und std::string ist sinnlos, da er using namespace std; gemacht hat.



  • So... okay!

    Ich bin glaub ich kurz davor das Programm zum laufen zu bekommen!

    So siehts bis jetzt aus:

    #include <cstdlib>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
      string passwort[25];
      passwort[25] = "bla";
    
      cout << "Hallo!" << endl;
      cout << endl;
      cout << "Bitte geben sie Ihr Passwort ein: ";
    
      cin >> passwort[25];
    
      if(strcmp (passwort, "bla") == 0 )
      {
        cout << "Moin!";
      }  
    
      else 
      {  
        cout << "Falsches Passwort!" << endl;
      }  
    
      system("PAUSE");	
      return 0;
    }
    

    Jetzt gibt es nur noch ein Problem... meinKompiler heult bei dieser stelle rum:

    if(strcmp (passwort, "bla") == 0 )
    

    Meldung:

    cannot convert `std::string*' to `const char*' for argument `1' to `int
    

    Kompiler: DevC++

    Was ist falsch?!



  • Mir scheint es, du hast die letzten Posts nicht 100%ig verstanden. Also erstmal ist ein string bereits eine Art char-Array. Dann wurde hier auch schon gesagt, dass man strings auch mit == vergleichen kann. Außerdem bringt es dir nichts, die Variable "passwort" mit einem Wert zu füllen, da "passwort" eh vom User wieder überschrieben wird. Alles in allem:

    #include <cstdlib>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
      string passwort;
    
      cout << "Hallo!" << endl;
      cout << endl;
      cout << "Bitte geben sie Ihr Passwort ein: ";
    
      cin >> passwort;
    
      if (passwort == "bla")
      {
        cout << "Moin!";
      }  
    
      else 
      {  
        cout << "Falsches Passwort!" << endl;
      }  
    
      system("PAUSE");    
      return 0;
    }
    

    EDIT: Such dir mal im I-Net ein paar Tutorials über C++ raus.



  • BitWax hat einen Fehler gemacht. Er sagte, dass du strcmp verwenden sollst. Das wurde aber von mir und The-Kenny bereits korrigiert. Also ➡ nochmal lesen.

    BitWax schrieb:

    Und std::string ist sinnlos, da er using namespace std; gemacht hat.

    Ich nutze fast nie using namespace std. Deshalb schreibe ich immer std::string 😉

    Gruß
    Don06



  • Also erstmal: Ein Fehler wenn man mit string arbeitet. Aber ja, ein Fehler.

    Don06 schrieb:

    BitWax schrieb:

    Und std::string ist sinnlos, da er using namespace std; gemacht hat.

    Ich nutze fast nie using namespace std. Deshalb schreibe ich immer std::string 😉

    hmmm, mir ist das zuviel, unnötige Schreibarbeit (wobei ich sowas aus der WinAPI gewohnt bin)



  • Ich bezog mich auf diesen Beitrag:

    BitWax schrieb:

    Also: includiere den Header "string". Anschließend statt "char passwort[8];" schreibe "string passwort". Und dann in der if-Anweisung nicht 'passwort == "bla"' sondern "strcmp (passwort, "bla") == 0"

    Du hast nur vor mir gepostet 😉

    Gruß
    Don06



  • Ja, dachte ich mir schon. Aber irgendwie haben wir beide den Thread gerade übernommen (?). Oder er ist so fertig von dem Zeug das er sich...nun...schlafen gelegt hat 🙂



  • Ah!!! Okay! Jetzt wird mir alles klar....

    Es gehts! JUHU!!!!

    DANKE AN ALLE DIE GEHOLFEN HABEN!

    Ich hab wieder einiges dazu gelernt!

    Ich habe die Video2Brain DVD mit Helge Maus. Dort bin ich gerade dabei mir Funktionen mit Rückgabewerten anzusehen...

    Zeiger, Referenzen... kommt alles noch!

    Wie ihr seht bin ich echt noch am Anfang, sodass solche "kleinen" Fehler passieren können! (finde ich zumindest)

    Das mit den Strings sind wieder solche "Kleinigkeiten", das erwähnen die im Video gar net... daher bin ich sehr erfreut über die Infos mit den Überschreiben etc...

    Parallel will ich mal gucken wie das erstellen optischer bzw grafischer Flächen mit C++ geht... da hör ich immer WinAPI und GUI... kp was das ist und wie man das lernen kann... keinen Bock mehr auf diese Konsolenanwendungen!^^

    Wenn jemand tolle Links oder so hat, kann sie ja mal per KN oder so schicken!

    Nochmal danke für eure Hilfe!



  • Lass die GUI-Programmierung ersteinmal am Rand liegen. Das weiß ich aus Erfahrung. Ich konnte noch nichteinmal richtig C++, da habe ich schon mit Fenstern angefangen. War extrem schwierig...musste erst nocheinmal richtig in C++ rein, und dann ging es halbwegs.



  • Ich will ja hier nicht vom Thema oder ins falsche Thema ablenken, aber was ist GUI und WiNAPI?!

    Für was bruahc ich das?! Wo kann ich es lernen?! Wann kann ich damit anfnagen?!



  • GUI = Graphical User Interface = Grafische Benutzeroberfläche = Fenster, etc.

    Anfangen: sobald du sicher in C++ bist
    WinAPI = Schnittstelle, um über C/C++ Fenster zu erstellen
    Wo: Hmm, einfach mal im I-Net und hier in der SuFu suchen



  • BitWax schrieb:

    GUI = Graphical User Interface = Grafische Benutzeroberfläche = Fenster, etc.

    WinAPI = Schnittstelle, um über C/C++ Fenster zu erstellen

    Das klingt verdammt gleich!

    Naja! Ich erkundige mich mal genauer!

    Jetzt sehe ich mich mal nach den system("PAUSE"); um....
    Das soll gar nicht mal so gut sein! hab hier im Forum mal was von nem Moderator drüber gelsen! Ich geh mal suchen!^^

    Mal sehen was man lernen kann!^^

    Danke für Eure Hilfe!

    Hat mir Spass gemacht! 😃



  • Ich habe dir zu system ("PAUSE") etwas geschrieben.

    und zur GUI und WinAPI, es hört sich gleich an, weil es ähnlich ist. GUI sind eben Fenster etc. und mit der WinAPI kannst du Fenster erstellen.



  • Achso! Da liegt der unterschied!^^

    Ich habe das schon gelesen mit dem System("PAUSE") aber ich will richtuige infos... warum ist das andere besser? Was muss ich beachten?! Wie setzt ich es richtig ein.... verstehste!^^

    Dennoch danke dafür! 😃



  • Du setzt es so ein, wie ich es auf irgendeiner Seite geschrieben habe, naja und wegen den W-Fragen, da musst mal gucken^^



  • Tatsächlich ist soetwas wie System("PAUSE") garnicht nötig.
    Konsolenprogramme sind dazu da, aus der Konsole aufgerufen zu werden. Dort bleibt der Text sowieso erhalten.
    Bei Visual C++ kannst du mit "Starten ohne debuggen" ein Schließen der Konsole verhindern. Wenn du debuggst hast du wahrscheinlich eh irgendwo einen Haltepunkt angegeben, davon geht M$ jedenfalls aus. Bei anderen IDEs wie Code::Blocks gibts ähnliche Optionen.

    Gruß
    Don06



  • Das sag aber mal dem Endbenutzer, dass er das Programm anstatt mit einem einfachen Doppelklick erst aufwendig in der Konsole öffnen muss.


Anmelden zum Antworten