C ++ mbsrtowcs () - C ++ मानक पुस्तकालय

C ++ में mbsrtowcs () फ़ंक्शन एक संकीर्ण मल्टीबाइट चरित्र अनुक्रम को एक विस्तृत वर्ण अनुक्रम (प्रकार wchar_t) में परिवर्तित करता है।

Mbsrtowcs () फ़ंक्शन हेडर फ़ाइल में परिभाषित किया गया है।

mbsrtowcs () प्रोटोटाइप

 size_t mbsrtowcs (wchar_t * dest, const char ** src, size_t len, mbstate_t * ps);

Mbsrtowcs () फ़ंक्शन मल्टीबाइट कैरेक्टर स्ट्रिंग को कनवर्ट करता है जिसका पहला बाइट * src द्वारा संबंधित वाइड कैरेक्टर रिप्रेजेंटेशन को दर्शाया जाता है और इसे वाइड कैरेक्टर एरे में स्टोर किया जाता है। भाग्य के लिए अधिकतम व्यापक वर्ण लिखे गए हैं।

रूपांतरण प्रक्रिया बार-बार mbrtowc () को कॉल करने के समान है। रूपांतरण रुक जाता है यदि:

  • एक मल्टीबाइट नल वर्ण परिवर्तित और संग्रहीत किया गया था। इस स्थिति में, src को शून्य और ps पर सेट किया जाता है जो प्रारंभिक शिफ्ट अवस्था का प्रतिनिधित्व करता है।
  • एक अमान्य मल्टीबाइट चरित्र का सामना किया गया था। इस मामले में, src पहले अनकंटेक्ट मल्टीबाइट कैरेक्टर की शुरुआत को इंगित करने के लिए सेट है।
  • भाग्य में लेन चौड़ा चरित्र संग्रहीत किया गया है। इस मामले में, src पहले अनकंटेक्ट मल्टीबाइट कैरेक्टर की शुरुआत को इंगित करने के लिए सेट है।

mbsrtowcs () पैरामीटर

  • भाग्य: उस पॉइंटर को इंगित करें जहां परिवर्तित विस्तृत वर्ण संग्रहीत है।
  • src: पॉइंटर को पॉइंटर में बदलने के लिए पहला मल्टीबीट कैरेक्टर।
  • लेन: स्टोर करने के लिए अधिकतम संख्या में विस्तृत वर्ण।
  • पीएस: मल्टीबीट स्ट्रिंग की व्याख्या करते समय उपयोग किए जाने वाले रूपांतरण राज्य को इंगित करता है

mbsrtowcs () वापसी मान

  • सफलता पर, mbsrtowcs () फ़ंक्शन समाप्त होने वाले विस्तृत वर्णों की संख्या को देता है, जो कि समाप्ति वाले विस्तृत अशक्त चरित्र को छोड़कर भाग्य को लिखा जाता है। यदि भाग्य एक अशक्त सूचक है, तो यह उन विस्तृत वर्णों की संख्या देता है जो असीमित लंबाई को देखते हुए लिखे गए होंगे।
  • रूपांतरण त्रुटि पर, -1 लौटा दिया जाता है और इरिलो को EILSEQ पर सेट किया जाता है

उदाहरण: mbsrtowcs () फ़ंक्शन कैसे काम करता है?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 लिखे गए विस्तृत वर्णों की संख्या (एल " _" को छोड़कर) = ४ विस्तृत वर्ण = (

दिलचस्प लेख...