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