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. mittelssscanf(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 !