Convert char to int



  • Ich möchte prüfen, ob eine vorgegebene Zahl eine Primzahl ist. Dazu nehme ich eine Zahl als Command Line Argument entgegen.

    Die Zahl steht also in der Variablen argv[1] ... und die ist vom Typ **char, wenn ich das richtig verstanden habe.

    Wie konvertiere ich denn so ein Dinges in einen Integer? So habe ich das versucht:

    number = static_cast<int>  (argv[1]);
    

    Das liefert mir aber die Fehlermeldung "Ungültige Typkonvertierung" ...

    Mhh ... was mache ich denn jetzt schon wieder falsch?

    LG

    P.S.: Ich hoffe, ich bin im richtigen Forum ... ansonsten bitte verschieben ...



  • Zahlen müssen geparst werden.
    In C z.B. mittels

    sscanf(argv[1], "%d", &number)
    // oder
    number = atoi(argv[1]);
    

    oder in C++ mittels

    std::istringstream istr(argv[1]);
    
    istr >> number;
    

    (ab C++11 auch mittels stoi).

    Mit scanf hast du ja schon experimentiert 😉

    PS: argv ist vom Typ char**, also ist argv[1] vom Typ char* (also ein nullterminierter C-String).



  • Jetzt verstehe ich die Notation char**, bzw. char* ... 🙂

    Ich hab die C++ Lösung versucht, um das Dingens als Stream einzulesen:

    std::istringstream istr(argv[1]);
    istr >> number;
    

    Die Variable (Funktion? Typ?) "istr" wird rot unterkringelt und ich erhalte die Fehlermeldung:

    Ein unvollständiger Typ ist nicht zulässig.

    Das sagt mir jetzt leider nicht viel ... Brauche ich vielleicht irgendeinen #include ?

    Weiterhin wird der Pipe Operator ">>" rot unterkringelt und liefert die Fehlermeldung:

    Kein ">>"-Operator stimmt mit diesen Operanden überein.

    Vermutlich ist das ein Folgefehler.

    LG



  • Wieso googelst du nicht nach dem fehlenden include für istringstream?

    http://www.cplusplus.com/reference/sstream/istringstream/

    also

    #include <sstream>



  • Supi ... so funzt das jetzt!

    Danke, vor allem auch für den Link auf die c++ Reference !


Anmelden zum Antworten