#include<strstream>
-
Welcher Compiler wird da verwendet?
Da auch strstream auf den normalen stream-Klassen beasiert, sollten die arithmetischen Extraktoren genauso arbeiten, im Fehlerfall also eine 0 zurückliefern.
-
camper schrieb:
die arithmetischen Extraktoren
*alle
-
-
Michael E. schrieb:
Sone schrieb:
camper schrieb:
die arithmetischen Extraktoren
*alle
Weswegen sollten die anderen (Edit: Extraktoren) sich anders verhalten?Edit: Lol, der Mod der das editiert hat hat einige Posts doppelt gelassen. SeppJ?
-
Oh nein, schick mir jetzt bloß keinen Elektroschrott!

-
_matze schrieb:
Oh nein, schick mir jetzt bloß keinen Elektroschrott!

Zu spaet.
Adresse? Du kriegst noch ein intaktes 1GB DDR3-SDRAM Modul gratis!
-
Erstmal Danke an Alle! Ich benutze jetzt natürlich auch sstream ...
@Sone: Speziellen Dank an dich, ist natürlich perfekt dieser Code und funzt super.
Bis dann!
-
Sone schrieb:
Weswegen sollten die anderen (Edit: Extraktoren) sich anders verhalten?Weil der Standard das so festlegt. Die Zeichen- und Stringextraktoren verändern ihr ARrgument nicht im Fehlerfall. Die arithmetischen Extraktoren benutzen alle num_get, und das liefert eben 0 im Fehlerfall.
-
camper schrieb:
Sone schrieb:
Weswegen sollten die anderen (Edit: Extraktoren) sich anders verhalten?Weil der Standard das so festlegt. Die Zeichen- und Stringextraktoren verändern ihr ARrgument nicht im Fehlerfall. Die arithmetischen Extraktoren benutzen alle num_get, und das liefert eben 0 im Fehlerfall.
???
Ich dachte du beziehst dich auf den Konvertierungsoperator! Also dass der Ausdruckistream >> var"Null zurueck gibt" (eigentlich liefert er ja eine Referenz, aber fortgedacht...)Edit: Ja, du meinst wohl die Variable. Klar, dass das nur bei den arithmetischen Extraktoren so laeuft, bei bspw. Zeigern waere das wohl auch vielleicht unsinnig
-
Edit: das gilt so nur für C++11.
In C++03 wird im Fehlerfall in num_get nichts zugewiesen.
-
Okay, ich habe mich zu weit aus dem Fenster gewagt.
convert >> sinint; if(convert >> sinint) //Wenn erfolgreich, also die Konvertierung des Streams nach void* gibt keinen Null-Pointer zurueck und indiziert somit, dass nicht fail/bad-bit gesetzt wurde std::cout << sinint; //Ausgeben else std::cout << (sinint = -1); //Sonst sinint auf -1 setzen und das ausgebenHier bekomme ich immer False, also eine 0 zurück. Dementsprechend wird immer auf -1 gesetzt. Wie macht man das jetzt richtig?
-
Mathias1986 schrieb:
Okay, ich habe mich zu weit aus dem Fenster gewagt.
convert >> sinint; if(convert >> sinint) //Wenn erfolgreich, also die Konvertierung des Streams nach void* gibt keinen Null-Pointer zurueck und indiziert somit, dass nicht fail/bad-bit gesetzt wurde std::cout << sinint; //Ausgeben else std::cout << (sinint = -1); //Sonst sinint auf -1 setzen und das ausgebenHier bekomme ich immer False, also eine 0 zurück. Dementsprechend wird immer auf -1 gesetzt. Wie macht man das jetzt richtig?
Ich hab ausversehen das convert >> sinint in Zeile 1 oben nicht geloescht

Losch es und es duerfte funktionieren.Also der Code muss so aussehen (auch oben editiert):
std::istringstream convert(s); int sinint(0); if(convert >> sinint) //Wenn erfolgreich, also die Konvertierung des Streams nach void* gibt keinen Null-Pointer zurueck und indiziert somit, dass nicht fail/bad-bit gesetzt wurde std::cout << sinint; //Ausgeben else std::cout << (sinint = -1); //Sonst sinint auf -1 setzen und das ausgeben
-
Ganz begreifen tu ichs nicht aber jo, es funktioniert!
Mörci!
