Ich benötige einfachen Kennwort Script, Hilfe??



  • "const std::string&" wäre in diesem Fall wohl am Besten. Ein String hat meistens mehr als 4 Zeichen + meistens 4 Bytes für die Länge macht schon 8 Bytes wenn du per value übergibst.

    Per Reference sinds nur 4 Bytes und keine aufwendigen Kopieroperationen. Da der String trotzdem nicht verändert werden soll macht man ein const davor.

    MfG SideWinder



  • freshman schrieb:

    @vR n' SideW: warum eigentlich
    bool checkPasswd(std::string &password)
    und nicht call-by-value oder Übergabe von konstantem Obj (read-only-Bez) ??

    Stimmt, ein

    bool checkPasswd(const std::string &password);
    

    waere schoener gewesen. call-by-value hab ich nicht gemacht, weil ich es als
    unnoetig angesehen habe, dass hier ein Objekt kopiert werden muss.

    mfg
    v R



  • freshman schrieb:

    virtuell Realisticer schrieb:

    Die hatte ich in meinem erste Post bereits gegeben ;).

    stimmt! Aber es war dein zweiter Post und nicht dein 'erste' 😃 😉

    Poeh!

    mfg
    v R



  • virtuell Realisticer schrieb:

    Poeh!

    Was heißt das?



  • Im Kreuzworträtsel würde man es unter "Ausruf des Erstaunens" finden. Naja vielleicht findet man dort eher "oha", in dem Fall vielleicht "Ausruf des Entsetzens", wobei dass wiederum zu hart für "poeh" ist 😃

    MfG SideWinder



  • ich glaube ich hab's; ist es das:
    sprech' mal 'Pö' aus mit scharfem P un dkurzem ö
    ist es das?



  • freshman schrieb:

    virtuell Realisticer schrieb:

    Poeh!

    Was heißt das?

    Du koenntest es so verstehen:

    realisticer sieht verachtend an freshman vorbei und geht, mit dem Gedanken im
    Hinterkopf, dass man sich die Beziehung zwischen passwd im zweiten und dem im
    ersten Post haette denken koennen, weiter

    :D.

    Ok, ich denke das wird zu OT hier, hehe. Gibs zu fresh, du willst mich was
    aergern *g*

    mfg
    v R



  • OT==OverTrieben ??
    fresh!=frech ??
    außerdemist Freitag-Nachmittag, kurz vor Feierabend und da kann man eben nicht mehr so gut denken



  • freshman schrieb:

    OT==OverTrieben ??

    ne :), aber fuer dich: http://dnq.priggish.de/#charta

    fresh!=frech ??

    so langsam 😃

    außerdemist Freitag-Nachmittag, kurz vor Feierabend und da kann man eben nicht mehr so gut denken

    Da stimme ich absolut zu ;).

    mfg
    v R



  • the script works good and I thank everyone here for helping me immensily.. so thank you immensily 😉

    However, I have another question, first here is my \1:

    #include<iostream>
    #include<string>
    
    bool checkPasswd(const std::string &password) {
        std::string passwd = "0x042e";
        if(password != passwd)
            return false;
            return true;
    }
    
    int main() {
        std::cout<<"Password: ";
        std::string userPasswd;
        std::getline(std::cin,userPasswd);
    
            if(checkPasswd(userPasswd))
                 std::cout<<"\nCorrect! Good job..\n";
    
            else
                 std::cout<<"\nWrong! Try again..\n";
    
        return 0;
    }
    

    my question is, in the event that someone is wrong, how can I have the script, first tell them they we're wrong, and then to go back to int main(), instead of exiting the app.??

    Plus, while in the Visual Studio env. The app works great, but when I use it in my windows env. the app works but when it comes time to output either correct or wrong, it does not pause, but simply closes out.. any ideas why and how to fix these two things I request?? Thank you very much in advance 🙂



  • You can do it like this, for example:

    int main() {
        for ( ; ; )
        {
            std::cout<<"Password: ";
            std::string userPasswd;
            std::getline(std::cin,userPasswd);
    
            if(checkPasswd(userPasswd))
            {
                std::cout<<"\nCorrect! Good job..\n";
                break;
            }
            else
                std::cout<<"\nWrong! Try again..\n";
        }
        // if you get here, the passwd was correct
        return 0;
    }
    

    edit
    The app just doesn't close while developing because vc++ prevents it from doing that. 😉
    You have to add some user input (cin.get() or something like that) at the end of your program if you want your console window to remain open.



  • thanks for the script, I actually worked it out by including conio.h and adding the getch(); function before the return 0; function.. 😉



  • 3mu180r schrieb:

    thanks for the script, I actually worked it out by including conio.h and adding the getch(); function before the return 0; function.. 😉

    Note that conio.h and the functions defined within conio.h are not part of
    the Standard-C++ Library. When you port the program to another platform where
    conio.h isn't available then your program won't compile anymore.

    mfg
    v R



  • @vR: It's right, there is a standard way to stop the program for keypress. But HumeSikkins said, that this code doesn't work on a few compilers. Maybe the non-standard way is the better one...

    Best regards,
    SideWinder



  • SideWinder schrieb:

    @vR: It's right, there is a standard way to stop the program for keypress. But HumeSikkins said, that this code doesn't work on a few compilers. Maybe the non-standard way is the better one...

    Best regards,
    SideWinder

    Hmmm...yes. For interested people, SideWinder refers to this thread:
    http://www.c-plusplus.net/forum/viewtopic.php?t=80672&start=0&postdays=0&postorder=asc&highlight=

    In this thread hume posted:

    HumeSikkins schrieb:

    Und jetzt kommt das Tolle: In der Regel funktioniert die sync()-Variante nicht bei Implementationen bei denen die in_avail()-Variante funktioniert und andersherum funktioniert die in_avail()-Variante genau dort nicht, wo die sync()-Variante funktioniert.

    Maybe a workaround could be this code

    void clearCinInBuf() {
        if(cin.rdbuf()->in_avail()) {
            cin.clear();
            cin.ignore(cin.rdbuf()->in_avail());
            cin.get();
        } else {
            cin.sync();
            cin.get();
        }
    }
    

    mfg
    v R


Anmelden zum Antworten