इस लेख में हम C++ STL में काम करने, वाक्य रचना और std::mbrtowc() फ़ंक्शन के उदाहरणों पर चर्चा करेंगे।
std::mbrtowc() क्या है?
std::mbrtowc() फ़ंक्शन C++ STL में एक इनबिल्ट फ़ंक्शन है, जिसे
सिंटैक्स
size_t mbrtowc( wchar_t* pwc, char* str, size_t n, mbstate_t* ps);
पैरामीटर
फ़ंक्शन निम्नलिखित पैरामीटर को स्वीकार करता है -
- पीडब्ल्यूसी - यह उस स्थान का सूचक है जहां हम चाहते हैं कि आउटपुट संग्रहीत किया जाए।
- str - कैरेक्टर स्ट्रिंग जो इनपुट के रूप में प्रयोग की जाती है।
- n - यह उन बाइट्स की संख्या है जिन्हें चेक किया जाना है।
- ps - जब हम मल्टीबाइट स्ट्रिंग की व्याख्या कर रहे होते हैं तो यह स्टेट ऑब्जेक्ट का पॉइंटर होता है।
रिटर्न वैल्यू
यह फ़ंक्शन रिटर्न मान निम्न स्थिति के अनुसार भिन्न होता है -
- 0 - फ़ंक्शन शून्य लौटाएगा जब str में जो वर्ण परिवर्तित किया जाना है वह NULL है।
- 1…n - मल्टीबाइट कैरेक्टर के बाइट्स की संख्या जो कि कैरेक्टर स्ट्रिंग *str. से कन्वर्ट होते हैं।
- -2 - अगले n बाइट अपूर्ण होने पर हमें -2 मिलेगा लेकिन अभी तक एक मान्य मल्टीबाइट वर्ण है।
- -1 - जब हम एन्कोडिंग त्रुटि का सामना करते हैं तो हमें -1 मिलता है, *pwc को कुछ भी नहीं लिखा जाता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_(const char* ch){ mbstate_t temp = mbstate_t(); int cal = strlen(ch); const char* i = ch + cal; int total; wchar_t con; while ((total = mbrtowc(&con, ch, i - ch, &temp)) > 0){ wcout << "Next " << total <<" bytes are the character " << con << '\n'; ch += total; } } int main(){ setlocale(LC_ALL, "en_US.utf8"); const char* len = u8"z\u00df\u6c34"; print_(len); }
आउटपुट
Next 1 bytes are the character z Next 2 bytes are the character ß Next 3 bytes are the character 水
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_(const char* ch){ mbstate_t temp = mbstate_t(); int cal = strlen(ch); const char* i = ch + cal; int total; wchar_t con; while ((total = mbrtowc(&con, ch, i - ch, &temp)) > 0){ wcout << "Next " << total <<" bytes are the character " << con << '\n'; ch += total; } } int main(){ setlocale(LC_ALL, "en_US.utf8"); const char* len = u8"\xE2\x88\x83y\xE2\x88\x80x\xC2"; print_(len); }
आउटपुट
Next 3 bytes are the character ∃ Next 1 bytes are the character y Next 3 bytes are the character ∀ Next 1 bytes are the character x