C++ में हम 32-बिट वर्ण प्रतिनिधित्व का उपयोग कर सकते हैं। c32rtomb() फ़ंक्शन का उपयोग 32-बिट वर्ण प्रतिनिधित्व को संकीर्ण मल्टी-बाइट वर्ण प्रतिनिधित्व में बदलने के लिए किया जाता है। यह फ़ंक्शन uchar.h हेडर फ़ाइल में पाया जाता है।
यह फ़ंक्शन तीन पैरामीटर लेता है:
- वह स्ट्रिंग जहां मल्टी-बाइट वर्ण संग्रहीत किया जाएगा
- परिवर्तित करने के लिए 32-बिट वर्ण
- mbstate_t ऑब्जेक्ट का पॉइंटर, जिसका उपयोग मल्टीबाइट स्ट्रिंग की व्याख्या के लिए किया जाता है
यह फ़ंक्शन सफल होने पर वर्ण सरणी में लिखे गए बाइट्स की संख्या लौटाता है, अन्यथा -1 लौटाता है। बेहतर समझ के लिए एक उदाहरण देखते हैं।
उदाहरण
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main() {
const char32_t myStr[] = U"Hello World";
char dest[50];
mbstate_t p{};
size_t length;
int j = 0;
while (myStr[j]) {
length = c32rtomb(dest, myStr[j], &p); // c32rtomb() से लंबाई प्राप्त करें
if ((length == 0) || (length > 50))
break;
for (int i = 0; i < length; ++i)
cout << dest[i];
j++;
}
return 0;
}
आउटपुट
Hello World