2012-07-12 12 views
6

के साथ बड़ी फ़ाइलों में खोजना मैं ifstream का उपयोग कर सी ++ में एक प्रोग्राम को कार्यान्वित कर रहा हूं जो बड़ी फ़ाइलों (~ 1TB) में खोजना चाहिए। हालांकि, यह 2 जीबी पढ़ने के बाद विफल रहता है। क्या बड़ी फाइलों के लिए भी फाइल की स्थिति पाने का कोई तरीका है? मैं 32-बिट विंडोज मशीन के लिए संकलित करता हूं।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

मैं यह वास्तव में कुछ भी परिवर्तित करता है पता नहीं है, लेकिन क्या आपने फ़ाइलों को पढ़ने के सादे सी विकल्प का उपयोग करने की कोशिश की है? – stefan

+0

@stefan में सादा सी फ़ाइल-स्थिति हैंडलर है जो आकार 32 बिट से अधिक है? – triclosan

+0

@triclosan जैसा कि मैंने कहा: मुझे नहीं पता, यह सिर्फ एक विचार था – stefan

उत्तर

1

आप, एक 32-बिट प्लेटफॉर्म पर संकलन कर रहे हैं यदि आप fstream उपयोग करते हैं, आप 32-बिट पहुंच पाने के लिए जा रहे हैं के बाद से। बड़ी फ़ाइलों को एक्सेस करने के लिए, आप एक मंच निर्भर समाधान का उपयोग करने की जरूरत है:,

    खिड़कियों के लिए
  • का उपयोग _lseeki64()
  • लिनक्स के लिए
  • , का उपयोग lseek64()
+0

मैं इन कार्यों का उपयोग करूंगा। धन्यवाद! – Patrik

संबंधित मुद्दे