Umwandlung: std::streamoff to int
-
Hi,
weiß jmd von euch, wie man std::streamoff in int konvertieren kann? Die Funktion tellg() liefert eigentlich einen std::streamoff Parameter als Rückgabewert.
Zwar wird im unteren Beispiel die Länge in int length korrekt abgespeichert, aber Visual Studio gibt mir die folgende Warnung aus:
warning C4244: 'initializing' : conversion from 'std::streamoff' to 'long', possible loss of dataint length = batchFile.tellg();Reicht in diesem Fall ein einfacher type_cast, oder muss ich irgendwas beachten?
Gruß
Tobias
-
Tobias Brenner schrieb:
Hi,
warning C4244: 'initializing' : conversion from 'std::streamoff' to 'long', possible loss of dataHabs mal mit long statt int probiert, daher jetzt diese Warnmeldung.
-
Hallo,
In deinem Fall ist streamoff halt größer als int oder long. Deswegen ist die Warnung Ok. Wenn die dateien nicht zu groß sind ist das ja auch kein Problem.
Du kannst ja auch mal __int64 probieren.
-
static_cast damit er die Klappe hält und gut.
Warum eigentlich das Offset als 'signed' speichern?
-
Icematix schrieb:
Warum eigentlich das Offset als 'signed' speichern?
Weil es ein Offset (eine relative Position) ist, keine absolute Position.
-
Wobei relative Positionen auch negative sein könnten...