mbtowc (मल्टीबाइट टू वाइड कैरेक्टर) एक मल्टीबाइट कैरेक्टर सीक्वेंस को वाइड कैरेक्टर (wchar_t) में बदलता है। यह <stdlib.h> में घोषित है।
सिंटैक्स
int mbtowc(wchar_t *pwc, const char *str, size_t n);
पैरामीटर्स
pwc: आउटपुट - परिणामी वाइड कैरेक्टर यहां स्टोर होता है।str: इनपुट मल्टीबाइट सीक्वेंस का प्रारंभ।n: जांचने के लिए अधिकतम बाइट्स।
रिटर्न वैल्यू
str != NULL: खपत बाइट्स की संख्या, 0 यदि नल बाइट, -1 यदि अमान्य सीक्वेंस।str == NULL: नॉन-जीरो यदि स्टेट-डिपेंडेंट एन्कोडिंग, 0 यदि स्टेटलेस।
उदाहरण
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>
int main() {
// लोकेल सेट करें (मल्टीबाइट सपोर्ट के लिए आवश्यक)
setlocale(LC_ALL, "");
const char *mbstr = "Hello 世界"; // UTF-8 स्ट्रिंग
wchar_t wc;
int bytes_consumed;
printf("Multibyte string: %s\n", mbstr);
// एक-एक करके कन्वर्ट करें
const char *p = mbstr;
while (*p) {
bytes_consumed = mbtowc(&wc, p, MB_CUR_MAX);
if (bytes_consumed <= 0) break;
wprintf(L"Wide char: U+%04X, bytes: %d\n", wc, bytes_consumed);
p += bytes_consumed;
}
return 0;
}
आउटपुट (UTF-8 लोकेल में)
Multibyte string: Hello 世界 Wide char: U+0048, bytes: 1 Wide char: U+0065, bytes: 1 Wide char: U+006C, bytes: 1 Wide char: U+006C, bytes: 1 Wide char: U+006F, bytes: 1 Wide char: U+0020, bytes: 1 Wide char: U+4E16, bytes: 3 Wide char: U+754C, bytes: 3
संबंधित फंक्शन्स
mblen: मल्टीबाइट कैरेक्टर की लंबाई निर्धारित करता है।wctomb: वाइड कैरेक्टर को मल्टीबाइट में बदलता है।mbstowcs,wcstombs: स्ट्रिंग-स्तर कन्वर्जन।- आधुनिक कोड:
iconvया C++11std::wstring_convert(अप्रचलित) /std::codecvtउपयोग करें।
नोट
मूल लेख का उदाहरण अपूर्ण था (mblen(NULL, MB_CUR_MAX) गलत उपयोग)। ऊपर सही उपयोग दिखाया गया है।