2012-07-12 13 views
6

Wdrażam program w C++ za pomocą ifstream, który musi szukać w dużych plikach (~ 1 TB). Jednak nie powiedzie się po odczytaniu 2 GB. Czy istnieje sposób na uzyskanie pozycji pliku, nawet w przypadku dużych plików? Kompiluję dla 32-bitowego komputera z systemem Windows.Poszukiwania w dużych plikach z 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

Nie wiem, czy to faktycznie zmienia niczego, ale czy próbowałeś używać zwykłej alternatywy czytania plików? – stefan

+0

@stefan ma zwykły moduł obsługi pozycji pliku C, którego rozmiar jest większy niż 32-bitowy? – triclosan

+0

@triclosan jak powiedziałem: nie wiem, to był tylko pomysł – stefan

Odpowiedz

1

Ponieważ jesteś kompilacji na platformie 32-bitowej, jeśli używasz fstream, idziesz, aby uzyskać dostęp do 32-bitów. Aby uzyskać dostęp do dużych plików, trzeba użyć platformy rozwiązanie zależną:

+0

Będę korzystać z tych funkcji. Dziękuję Ci! – Patrik

Powiązane problemy