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

C++11 के साथ विंडोज़ में यूनिकोड UTF-8 फ़ाइलों को Wstrings में कैसे पढ़ें?

2024-12-21 को प्रकाशित
ब्राउज़ करें:806

How to Read Unicode UTF-8 Files into Wstrings in Windows with C  11?

विंडोज में यूनिकोड यूटीएफ-8 फाइलों को डब्ल्यूस्ट्रिंग्स में पढ़ना

विंडोज प्रोग्रामिंग के दायरे में, एक फाइल से यूनिकोड (यूटीएफ-8) डेटा को पुनर्प्राप्त करने का कार्य एक विस्तृत वर्ण स्ट्रिंग (wstring) को C 11 मानक द्वारा प्रदान की गई बहुमुखी क्षमताओं के माध्यम से पूरा किया जा सकता है।

का लाभ उठाना std::codecvt_utf8 पहलू

इस समाधान का सार std::codecvt_utf8 पहलू का उपयोग करने में निहित है। यह पहलू UTF-8 एन्कोडेड बाइट स्ट्रिंग्स और UCS2 या UCS4 प्रतिनिधित्व को नियोजित करने वाले कैरेक्टर स्ट्रिंग्स के बीच एक सेतु के रूप में कार्य करता है। इसमें टेक्स्ट और बाइनरी दोनों प्रारूपों को शामिल करते हुए, UTF-8 फ़ाइलों को पढ़ने और लिखने दोनों की कुंजी है। एक स्थानीय वस्तु को आम तौर पर त्वरित किया जाता है। यह ऑब्जेक्ट संस्कृति-विशिष्ट जानकारी को उन पहलुओं के समूह के रूप में समाहित करता है जो संयुक्त रूप से एक विशिष्ट स्थानीयकृत वातावरण को परिभाषित करते हैं। एक बार प्राप्त होने के बाद, स्ट्रीम बफर को इस लोकेल से जोड़ा जा सकता है।

#include #शामिल #शामिल std::wstring readFile(const char* फ़ाइल नाम) { std::wifstream wif(फ़ाइल नाम); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8)); std::wstringstream wss; wss

यह फ़ंक्शन शानदार ढंग से एक निर्दिष्ट UTF-8 फ़ाइल खोलता है, इसकी सामग्री को wstring में पढ़ता है, और परिणामी स्ट्रिंग लौटाता है।

वैकल्पिक दृष्टिकोण: ग्लोबल C लोकेल सेट करना

एक अन्य व्यवहार्य विकल्प में स्ट्रिंग स्ट्रीम से जुड़ने से पहले वैश्विक सी लोकेल सेट करना शामिल है। यह कमांड सुनिश्चित करता है कि std::locale डिफॉल्ट कंस्ट्रक्टर के सभी बाद के इनवोकेशन से वैश्विक C लोकेल की प्रतियां प्राप्त होंगी, जिससे स्पष्ट स्ट्रीम बफर इमब्यूइंग की आवश्यकता समाप्त हो जाएगी।

#include 
#include 
#include 

std::wstring readFile(const char* filename)
{
    std::wifstream wif(filename);
    wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8));
    std::wstringstream wss;
    wss 

इस संशोधन के साथ, wstrings को UTF-8 फ़ाइलों से आसानी से पढ़ा जा सकता है:

std::wstring wstr = readFile( "a.txt");

निष्कर्ष
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8));

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3