Frage zu ifstream und tellg()
-
Hallo, ich wollte in meinem Code folgendes realisieren:
//Größe der Datei ermitteln und in file_size speichern std::ifstream::pos_type file_size ( file.tellg() ); if(file_size == -1) //gucken, ob alles geklappt hat
Auf der C++-Reference habe ich gelesen, dass tellg() -1 zurück gibt, wenn ein Fehler aufgetreten ist. Wenn ich aber file_size mit -1 vergleiche, bekomme ich eine Fehlermeldung:
error: ambiguous overload for 'operator==' in 'file_size == -0x000000001' note: candidates are: operator==(std::streamoff, int) <built-in>| note: bool std::fpos<_StateT>::operator==(const std::fpos<_StateT>&) const [with _StateT = mbstate_t]|
Weiss jemand, wo der Fehler liegt?
-
Sieht so aus, als müsstest du
std::ifstream::pos_type(-1)
schreiben...
Oder aberstd::ifstream::pos_type npos(-1)
und dann eben
if(file_size == npos)
bb
-
Stimmt, das hat geholfen. Danke
-
unskilled schrieb:
Sieht so aus, als müsstest du
std::ifstream::pos_type(-1)
schreiben...
Oder aberstd::ifstream::pos_type npos(-1)
und dann eben
if(file_size == npos)
bb
Keine Notwendigkeit für Indirektion:
if(file_size == std::ifstream::pos_type(-1))
Jedoch wird npos wahrscheinlich sowieso wegoptimiert...
-
SeppJ schrieb:
Keine Notwendigkeit für Indirektion:
if(file_size == std::ifstream::pos_type(-1))
Jedoch wird npos wahrscheinlich sowieso wegoptimiert...
Vermut ich auch mal ganz stark
außerdem find ich es so, wie du es jz gemacht hast, nicht wirklich lesbarbb
PS: Warum werd ich denn ständig ausgeloggt?
Hab mich heut sicher schon 10mal einloggen müssen - und ich bin erst 15Uhr aufgestanden
-
unskilled @logged-off schrieb:
SeppJ schrieb:
Keine Notwendigkeit für Indirektion:
if(file_size == std::ifstream::pos_type(-1))
Jedoch wird npos wahrscheinlich sowieso wegoptimiert...
Vermut ich auch mal ganz stark
außerdem find ich es so, wie du es jz gemacht hast, nicht wirklich lesbarbb
PS: Warum werd ich denn ständig ausgeloggt?
Hab mich heut sicher schon 10mal einloggen müssen - und ich bin erst 15Uhr aufgestandenNa dann guten Morgen!
-
Ist std::ifstream::pos_type denn nicht einfach nur ein typedef auf size_t, wie es bei std::string::size_type oder std::vector<T>::size_type ist ?
-
typedef auf char_traits::pos_type oder so^^
wieso?bb
-
Wenn die ganzen verschiedenen X::size_type's alle im Endeffeckt nur typedefs auf size_t wären, dürfte es ja eigentlich keine Probleme geben, die mit "-1" zu vergleichen, oder?
-
Gilder schrieb:
Wenn die ganzen verschiedenen X::size_type's alle im Endeffeckt nur typedefs auf size_t wären, dürfte es ja eigentlich keine Probleme geben, die mit "-1" zu vergleichen, oder?
ist nicht ganz richtig - gibt schon mal mind. ne signed/unsigned missmatch warning^^
außerdem sollte der pos_type kein size_t sein - wird vermutlich nen (signed) long long sein - bin ich mir aber nicht sicher und ich glaub auch nicht, dass das vom standard vorgeschrieben wird...ich würds wie gesagt mit dem npos helper machen...
bb
-
ok - vermutlich ists doch nicht so einfach^^
ich würd ja auch mal gucken, wie es die msvc-lib macht, allerdings ist mein msvc hier zu doof, zur deklaration zu gehen...
sizeof(string::pos_type) ist aber schonmal 24^^bb
-
unskilled @logged-off schrieb:
PS: Warum werd ich denn ständig ausgeloggt?
Hab mich heut sicher schon 10mal einloggen müssen - und ich bin erst 15Uhr aufgestandenLösch mal die Cookies. Ich hatte schon ähnliche Probleme mit dem Forum und konnte sie so beheben.
-
Nexus schrieb:
unskilled @logged-off schrieb:
PS: Warum werd ich denn ständig ausgeloggt?
Hab mich heut sicher schon 10mal einloggen müssen - und ich bin erst 15Uhr aufgestandenLösch mal die Cookies. Ich hatte schon ähnliche Probleme mit dem Forum und konnte sie so beheben.
Jopp - siehe Forentechnik - aber danke
Naja - ich lösch bei jedem solchen Problem diec-plusplus[x]
-Cookies... Allerdings hatte ich trotzdem 3-4h lang keine Chance, länger als einen Post lang eingeloggt zu bleiben... Irgendwie scheint das aber "normal" zu sein - hab jz an 2 komplett versch. PCs das gleiche Problem gehabt... Letzte mal war aber eigtl schon nen ganzes Weilchen her...bb
-
unskilled schrieb:
Jopp - siehe Forentechnik - aber danke
Naja - ich lösch bei jedem solchen Problem diec-plusplus[x]
-Cookies... Allerdings hatte ich trotzdem 3-4h lang keine Chance, länger als einen Post lang eingeloggt zu bleiben... Irgendwie scheint das aber "normal" zu sein - hab jz an 2 komplett versch. PCs das gleiche Problem gehabt... Letzte mal war aber eigtl schon nen ganzes Weilchen her...bb
Ich hatte das mal in einem anderem Forum.. War sehr ärgerlich, weil ich nicht mal für die Länge eines Posts eingeloggt war.
-
drakon schrieb:
unskilled schrieb:
Jopp - siehe Forentechnik - aber danke
Naja - ich lösch bei jedem solchen Problem diec-plusplus[x]
-Cookies... Allerdings hatte ich trotzdem 3-4h lang keine Chance, länger als einen Post lang eingeloggt zu bleiben... Irgendwie scheint das aber "normal" zu sein - hab jz an 2 komplett versch. PCs das gleiche Problem gehabt... Letzte mal war aber eigtl schon nen ganzes Weilchen her...bb
Ich hatte das mal in einem anderem Forum.. War sehr ärgerlich, weil ich nicht mal für die Länge eines Posts eingeloggt war.
xD
naja - mit genügend geduld bleibt man iwann eingeloggt^^
aber wie du siehst, musste ich ja auch mehrere posts als unregg posten, weil ich mich gar nicht erst einloggen konnte... xD
wenn ich wüsste, wo das problem genau liegen würde, hätte ich auch nicht ca. 30mal die c++ cookies löschen müssen
bin beim googlen aber auf mehrere leute gestoßen, die das problem mal hatten - es wird meist auf den browser geschoben und das keine cookies akzeptiert werden... kann aber nicht alles sein - hab auch mind. einen gefunden, der mit der 3er version von phpbb noch das prob hatte... scheint also noch keiner rausbekommen zu haben, wieso das so ist...bb
-
unskilled schrieb:
bin beim googlen aber auf mehrere leute gestoßen, die das problem mal hatten - es wird meist auf den browser geschoben und das keine cookies akzeptiert werden... kann aber nicht alles sein - hab auch mind. einen gefunden, der mit der 3er version von phpbb noch das prob hatte... scheint also noch keiner rausbekommen zu haben, wieso das so ist...
bb
Hmm. Der Fehler tritt nur höchst sporadisch auf.. (Aber dann gehäuft.. :S). Ich finde den Fehler auch recht merkwürdig, weil ich ihn auch auf verschiedenen Boards hatte.. Bist du einverstanden, wenn wir das auf die Illuminaten schieben? - Jemand muss es ja sein..
-
drakon schrieb:
Hmm. Der Fehler tritt nur höchst sporadisch auf.. (Aber dann gehäuft.. :S).
jopp
drakon schrieb:
Ich finde den Fehler auch recht merkwürdig, weil ich ihn auch auf verschiedenen Boards hatte..
Ich nicht - nur hier... Aber bin auch nicht bei all zu vielen Foren aktiv...
drakon schrieb:
Bist du einverstanden, wenn wir das auf die Illuminaten schieben? - Jemand muss es ja sein..
:D:D:D
als ob ich dir wiedersprechen würde ;o)bb