2012-02-11 18 views
11

पर पूर्णांक लिखना मेरे पास एक बहुत ही सरल सवाल है, जो मेरे लिए मुश्किल होता है क्योंकि यह पहली बार है जब मैंने बाइनरी फाइलों के साथ काम करने की कोशिश की, और मैं उन्हें काफी समझ नहीं पा रहा हूं। मैं बस एक बाइनरी फ़ाइल के लिए एक पूर्णांक लिखना चाहता हूँ।बाइनरी फ़ाइल (सी ++)

यहाँ कैसे मैंने किया है:

#include <fstream> 
using namespace std; 
int main() { 
    int num=162; 
    ofstream file ("file.bin", ios::binary); 
    file.write ((char *)&num, sizeof(num)); 
    file.close(); 
    return 0; 
} 

आप मुझे बता सकते अगर मैंने कुछ गलत है, और क्या किया?

जो भाग मुझे परेशानी दे रहा है वह फ़ाइल के साथ लाइन है। लिखना, मुझे समझ में नहीं आ रहा है।

अग्रिम धन्यवाद।

+1

क्या यह काम करता है? आप जो अपेक्षा करते हैं उससे अलग कैसे होता है? –

+2

नाइटपिक सलाह: 1) 'reinterpret_cast (& num)' कहें, और 'file.close()' और 'वापसी 0' को छोड़ दें, क्योंकि ये सभी स्वचालित रूप से होते हैं। –

+0

@KerrekSB क्या आप कृपया बता सकते हैं कि reinterpret_cast (और num) क्या करता है? – eqagunn

उत्तर

19

जो मुझे परेशानी दे रहा है वह फ़ाइल फ़ाइल.write के साथ है, मैं समझ नहीं पा रहा हूं।

आप ofstream.write() विधि के दस्तावेज़ पढ़ें, तो आप यह है कि यह दो तर्क का अनुरोध करता देखेंगे:

  1. सामग्री के साथ डेटा के एक ब्लॉक करने के लिए एक सूचक लिखा जा करने के लिए;

  2. इस ब्लॉक के के बाइट्स में आकार का प्रतिनिधित्व करने वाला एक पूर्णांक मान।

यह बयान सिर्फ ofstream.write() करने के लिए जानकारी के इन दो टुकड़े देता है:

file.write(reinterpret_cast<const char *>(&num), sizeof(num)); 

&num डेटा के ब्लॉक के पते (इस मामले में सिर्फ एक पूर्णांक चर में) है, sizeof(num) के आकार है यह ब्लॉक (उदाहरण के लिए विंडोज प्लेटफ़ॉर्म पर 4 बाइट्स)।

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