2012-07-12 13 views
6

Sto implementando un programma in C++ utilizzando ifstream che deve cercare in file di grandi dimensioni (~ 1 TB). Tuttavia, ciò non riesce dopo aver letto 2 GB. C'è un modo per ottenere posizioni di file, anche per file di grandi dimensioni? Compilo per una macchina Windows a 32 bit.Ricerca in file di grandi dimensioni con ifstream

std::ifstream f; 
f.open(filename.c_str(), std::ifstream::in | std::ifstream::binary); 
while(true) { 
    std::cout << (uint64_t)(f.tellg()) << std::endl; 
    //read data 
} 
+0

non so se questo cambia in realtà nulla, ma hai provato a usare la semplice alternativa C di leggere i file? – stefan

+0

@stefan ha un gestore di posizione file C semplice la cui dimensione è maggiore di 32 bit? – triclosan

+0

@triclosan come ho detto: non lo so, era solo un'idea – stefan

risposta

1

Dal momento che si sta compilando su una piattaforma a 32 bit, se si utilizza fstream, che si sta per ottenere l'accesso a 32-bit. Per accedere a file di grandi dimensioni, è necessario utilizzare una piattaforma di soluzione di dipendente:

+0

userò queste funzioni. Grazie! – Patrik

Problemi correlati