Integer mit einem String vergleichen?
-
Ja wie funktioniert das, bei mir kommt folgender Fehler:
Fehler 1 error C2664: 'strcmp': Konvertierung des Parameters 1 von 'std::stringstream' in 'const char *' nicht möglich c:\dokumente und einstellungen\administrator\desktop\parser\kann verschiedene variabeln unterscheiden\k7token1.cpp 71 K7token1
Ich habe mir einen Parser gebaut jetzt will ich die token mit den Zahlenwerten auf Echtheit prüfen, weil ich benutze atoi und der würde mir ja z.B. bei einer Zahl 3e450 einfach nur eine 3 draus machen, dann will ich eben sozusagen die 3 mit der 3e450 vergleichen. Die 3 war ja jetzt eine int, daher zu nem string machen und die 3e450 steht ja in einem char*. Ich muss zugeben, ich bin ein ziemlicher Anfänger im Programmieren und hangle mich mit Grundwissen und ein paar Ideen durch meine Problemfälle.
-
stringstreamstellt die Methodestr()bereit. Undstringhat wiederrumc_str(). Logische Folgerung:strcmp(sstrem.str().c_str() ...
-
du benutzt streams UND atoi? Oo
streams sind doch gerade dazu da, atoi zu ersetzen^^
guck mal in der faq nach: einmal zahl und zurück oder so...
-
Es wäre vielleicht besser, die token mit den Zahlenfolgen selber auszuwerten, denn 3e450 ist schon recht außergewöhnlich und hat in Sachen C++ auch nichts viel mit int zu zun.
-
Leider komme ich da nicht ganz mit
-
Nein ich will damit nur prüfen, ob in meiner Zahl vlt. versehentlich ein Buchstaben oder ähnliches gekommen ist, was da nicht hingehört.
-
std::string eingabe; eingabe = "3e23"; std::stringstream ss; ss << eingabe; float x; ss >> x; std::cout << x;macht doch das, was du erreichen möchtest, oder!?
bb
-
Sweethome85 schrieb:
Nein ich will damit nur prüfen, ob in meiner Zahl vlt. versehentlich ein Buchstaben oder ähnliches gekommen ist, was da nicht hingehört.
also soll 3e3 nicht 3000 sein, sondern eine fehleingabe?
-
-
Ja genau volkard, also das mit dem e ist da vlt ein schlechtes Beispiel.
z.B. 3r40da soll er erkennen das da ein Fehler vorliegt!
-
Wie wäre es mit einer Exception.
try { // Mögliche fehlerursache // Die eingabe in den richtigen Datentyp umwandeln } catch (...) { // Den Fehler ausgeben std::cout << "Bitte nur Zahlen eingeben" << endl; return 1; // falls die main funktion einen int zurückgibt } // weiter mit anderem CodeSo würde ich das machen. Bin zwar nur ein C# Programmierer aber kenn mich ein bisschen mit C++ aus
.
-
Der Thread ist alt. Bitte poste nicht mehr in derart alten Threads.
-
EOutOfResources schrieb:
Der Thread ist alt. Bitte poste nicht mehr in derart alten Threads.
Und du bist Moderator und hast das zu entscheiden?
-
Scorcher24 schrieb:
Und du bist Moderator und hast das zu entscheiden?
Nein. Was hast du eigentlich gegen meine Aussage? Es ist doch total egal ob ich es ihm sage oder ein Mod es tut. Oder stimmst du mit mir nicht überein, dass man in einem eineinhalb Jahre alten Thread nicht mehr posten soll?
-
EOutOfResources schrieb:
Scorcher24 schrieb:
Und du bist Moderator und hast das zu entscheiden?
Nein. Was hast du eigentlich gegen meine Aussage? Es ist doch total egal ob ich es ihm sage oder ein Mod es tut. Oder stimmst du mit mir nicht überein, dass man in einem eineinhalb Jahre alten Thread nicht mehr posten soll?
Das kann man sehen wie man möchte. Einerseits wird man in jedem Forum auf die Sufu geprügelt, andererseits soll man nicht posten... er hatte ja was dazu zu sagen ;).
-
Scorcher24 schrieb:
EOutOfResources schrieb:
Der Thread ist alt. Bitte poste nicht mehr in derart alten Threads.
Und du bist Moderator und hast das zu entscheiden?
Er nicht, ich schon. Und nach dem absolut sinnlosen Beitrag von BlackFalcon und eurer themenfremden Diskussion ist hier Schluß - ihr könnt gerne im NadrW weiter über Nekromantie diskutieren.