Portable Möglichkeit, Dateigröße in C / C ++ zu erhalten

8

Ich muss die Byte-Größe einer Datei bestimmen.

Die Programmiersprache ist C ++ und der Code sollte mit Linux, Windows und jedem anderen Betriebssystem funktionieren. Dies impliziert die Verwendung von Standard-C- oder C ++ - Funktionen / Klassen.

Dieses triviale Bedürfnis hat scheinbar keine triviale Lösung.

    
chmike 11.03.2010, 10:26
quelle

6 Antworten

8

Mit dem Stream von std können Sie:

verwenden %Vor%

Wenn Sie nur mit write only file (std :: ofstream) arbeiten, gibt es einige andere Methoden:

%Vor%     
Dewfy 11.03.2010, 10:33
quelle
6

Sie können stat system call verwenden:

%Vor%     
Adil 11.03.2010 12:04
quelle
3

Wenn Sie nur die Dateigröße benötigen, ist dies sicherlich zu viel Aufwand, aber im Allgemeinen würde ich mit Boost.Filesystem für plattformunabhängige Dateioperationen. Neben anderen Attributfunktionen enthält es

%Vor%

Sie können die Referenz hier finden. Obwohl Boost Libraries magisch wirken, habe ich es oft sehr effizient umgesetzt. Sie könnten auch nur die Funktion extrahieren, die Sie benötigen, aber dies könnte sich als schwierig erweisen, da Boost ziemlich komplex ist.

    
Sebastian 11.03.2010 11:41
quelle
0

Simples:

%Vor%     
graham.reeds 11.03.2010 10:34
quelle
-1

Oft möchten wir Dinge auf die tragbarste Art und Weise erledigen, aber in bestimmten Situationen, besonders in diesem Fall, würde ich dringend die Verwendung von System-APIs für die beste Leistung empfehlen.

    
the100rabh 11.03.2010 12:11
quelle
-1

Portabilität erfordert, dass Sie den kleinsten gemeinsamen Nenner verwenden, der C. (nicht C ++) wäre. Die Methode, die ich verwende, ist die folgende.

%Vor%     
iplayfast 30.07.2010 17:28
quelle