La semplice risposta è no. Più precisamente, dipende dal sistema: sotto Unix, è possibile (ad esempio usando stat
); sotto Windows, non è possibile per un file di testo, ma se stai leggendo il file in binario, c'è una funzione GetFileSize
che può essere utilizzata.
Anche se non è garantita, in tutte le implementazioni che conosco (per queste due piattaforme), di cercare la fine del file, quindi facendo un ftell
, tornerà qualcosa che, una volta convertito in una sufficientemente grande integrale digitare, darà gli stessi risultati di sopra (con le stesse restrizioni ).
Infine: perché avete bisogno di queste informazioni? Se si tratta solo di allocare un buffer di dimensioni opportune , anche con un file di testo, GetFileSize
(e tell
dopo aver cercato fino alla fine) restituirà un valore leggermente superiore rispetto al numero di byte che è possibile leggere. Il tuo buffer sarà leggermente superiore a , ma generalmente non è un problema.
fonte
2012-02-03 16:49:28
In puro standard C++, o anche le API specifiche del sistema operativo vanno bene? Ci sono funzioni non portabili (es. ['GetFileSizeEx()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364957 (v = vs.85) .aspx)) per ottenere la dimensione dei file. –
Vuoi dire come ottenere la dimensione del file? –
Beh, sono i compiti e non sono autorizzato a utilizzare le API. Tutto quello che posso usare sono le funzioni iostream e fstream. Neanche archi. – SpeedBirdNine