2010-01-16 12 views
14

मैं टेक्स्ट फ़ाइल से डेटा पढ़ने, इसे साफ़ करने और फिर fstream कक्षा का उपयोग करके उस क्रम में लिखने की कोशिश कर रहा हूं।फ़ाइल से पढ़ें, इसे साफ़ करें, इसे लिखें

मेरा प्रश्न यह है कि इसे पढ़ने के बाद फ़ाइल को कैसे साफ़ किया जाए। मुझे पता है कि मैं एक फाइल खोल सकता हूं और इसे एक ही समय में साफ़ कर सकता हूं, लेकिन क्या कुछ फ़ंक्शन है जिसे मैं अपनी सामग्री को साफ़ करने के लिए स्ट्रीम पर कॉल कर सकता हूं?

उत्तर

15

आपको इसे खोलना चाहिए, अपना इनपुट ऑपरेशन करना चाहिए, और फिर इसे बंद करें और std :: fstream :: trunc flag set के साथ इसे फिर से खोलें।

#include <fstream> 

int main() 
{ 
    std::fstream f; 
    f.open("file", std::fstream::in); 

    // read data 

    f.close(); 
    f.open("file", std::fstream::out | std::fstream::trunc); 

    // write data 

    f.close(); 

    return 0; 
} 
4

आप एक दुर्घटना या अन्य विनाशकारी घटना की स्थिति में पूरी तरह से सुरक्षित बनाना चाहते हैं, तो आप एक दूसरे, अस्थायी फ़ाइल के लिए लिखने करना चाहिए। एक बार समाप्त हो जाने पर, पहली फ़ाइल हटाएं और अस्थायी फ़ाइल को पहली फ़ाइल में पुनर्नामित करें। ऐसा करने में सहायता के लिए Boost Filesystem लाइब्रेरी देखें।

+0

इस तरह से किया गया है, अभी भी हटाएं और नाम बदलने के बीच एक अंतर है। यूनिक्स फाइल सिस्टम पर, आपको fsync करना चाहिए, हटाएं छोड़ें, और केवल पहली फ़ाइल पर अस्थायी फ़ाइल का नाम बदलें; यह परमाणु रूप से बदल दिया जाएगा। विंडोज़ पर, एनटीएफएस में एक विशेष रीप्लेसफाइल फ़ंक्शन है; परमाणु प्रतिस्थापन अन्य फाइल सिस्टम AFAIK पर करने योग्य नहीं हैं। – ephemient

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