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

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

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

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

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

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

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

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

wcsrtombs () पैरामीटर

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

wcsrtombs () वापसी मान

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

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

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

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

 मल्टीबाइट वर्णों की संख्या ("0" को छोड़कर) = 8 मल्टीबाइट वर्ण = ib

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