"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गेटलाइन() के बिना C++ में फ़ाइल बाइट्स को चार ऐरे में कैसे पढ़ें?

गेटलाइन() के बिना C++ में फ़ाइल बाइट्स को चार ऐरे में कैसे पढ़ें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:558

How to Read File Bytes into a Char Array in C   Without getline()?

सी में एक चार सरणी में फ़ाइल बाइट्स को कैसे पुनर्प्राप्त करें

गेटलाइन() का उपयोग किए बिना फ़ाइल बाइट्स को एक चार सरणी में पढ़ने के लिए, विचार करें ifstream::read() का उपयोग करना। इन चरणों का पालन करें:

  1. फ़ाइल खोलें:

    std::ifstream infile("C:\\MyFile.csv");
  2. फ़ाइल की लंबाई प्राप्त करें:

    infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);
  3. बफर आकार सुनिश्चित करें:

    if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }
  4. फ़ाइल पढ़ें:

    infile.read(buffer, length);

अतिरिक्त नोट्स:

  • सटीक बाइट हैंडलिंग के लिए फ़ाइल को बाइनरी मोड में खोलना (उदाहरण के लिए, std::ios_base::binary के साथ) अनुशंसित है।
  • हालांकि सीकग() और टेलग() आम तौर पर विश्वसनीय होते हैं, कुछ मामलों में वे हमेशा सटीक फ़ाइल आकार प्रदान नहीं कर सकते हैं।
  • पूरी फ़ाइल को एक ऑपरेशन में पढ़ने और बड़ी फ़ाइलों को संभालने के लिए, std::vector का उपयोग करें और std::istreambuf_iterator अधिक लचीलापन प्रदान कर सकता है।

अद्यतित दृष्टिकोण (2019):

पढ़ने के दौरान संभावित त्रुटियों को ध्यान में रखने के लिए, निम्नलिखित दृष्टिकोण पर विचार करें:

size_t chars_read;

if (!(infile.read(buffer, sizeof(buffer)))) {
    if (!infile.eof()) {
        // Handle error during reading
    }
}

chars_read = infile.gcount(); // Get actual number of bytes read
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3