2012-07-12 33 views
6

Tôi đang triển khai chương trình bằng C++ sử dụng ifstream phải tìm kiếm các tệp lớn (~ 1TB). Tuy nhiên, điều này không thành công sau khi đọc 2GB. Có cách nào để lấy các vị trí tệp, ngay cả đối với các tệp lớn không? Tôi biên dịch cho một máy tính 32-bit windows.Tìm kiếm trong các tệp lớn với 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

Tôi không biết nếu điều này thực sự thay đổi bất cứ điều gì, nhưng bạn đã thử bằng cách sử dụng các thay thế đồng bằng C của các tập tin đọc? – stefan

+0

@stefan có trình xử lý vị trí tệp C đơn giản có kích thước lớn hơn 32 bit? – triclosan

+0

@triclosan như tôi đã nói: Tôi không biết, đó chỉ là một ý tưởng – stefan

Trả lời

1

Vì bạn đang biên dịch trên nền tảng 32 bit, nếu bạn sử dụng fstream, bạn sẽ nhận được quyền truy cập 32 bit. Để truy cập vào các file lớn, bạn cần phải sử dụng một giải pháp phụ thuộc nền tảng:

+0

Tôi sẽ sử dụng các chức năng này. Cảm ơn bạn! – Patrik

Các vấn đề liên quan