C 庫 - mbstowcs() 函式



C 的stdlibmbstowcs() 函式用於將 'str' 指向的多位元組字元字串轉換為 'pwcs' 指向的陣列。

轉換後的字元儲存在 'pwcs' 指向的陣列的連續元素中。

目標陣列最多隻能容納 n 個寬字元。

語法

以下是 mbstowcs() 函式的 C 庫語法:

size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)

引數

此函式接受以下引數:

  • pwcs − 它表示指向 wchar_t 元素陣列的指標,該陣列足夠長,可以儲存最多 n 個字元的寬字串。

  • str − 它表示指向需要轉換的以 null 結尾的多位元組字串的第一個元素的指標。

  • n − 它表示 'pwcs' 指向的陣列中存在的最大 wchar_t 字元數。

返回值

此函式返回轉換的字元數,不包括 null 字元。如果找到無效的多位元組字元,則返回 -1。

示例 1

在這個例子中,我們建立一個基本的 c 程式來演示 mbstowcs() 函式的使用。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <locale.h>

int main() {
   // UTF-8 encoded multibyte string
   const char *mbstr = "zß?\xF0\x9F\x8D\x8C";
   
   // Set locale for UTF-8
   setlocale(LC_ALL, "en_US.utf8");
   
   // Wide character array
   wchar_t wcs[5];

   size_t len = mbstowcs(wcs, mbstr, 5);
   if (len != (size_t)-1) {
      wprintf(L"Wide string: %ls\n", wcs);
   } else {
      perror("Conversion error");
   }
   
   return 0;
}

輸出

以下是輸出:

Conversion error: Invalid or incomplete multibyte or wide character

示例 2

下面的 c 示例使用 mbstowcs() 函式將多位元組字串轉換為寬字元字串。

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

int main() {
   // Multibyte string
   const char *mbstr = "Hello, world!"; 
   
   // Set locale for UTF-8
   setlocale(LC_ALL, "en_US.utf8"); 
   
   // Wide character array (adjust size as needed)
   wchar_t wcs[20];
   
   size_t len = mbstowcs(wcs, mbstr, sizeof(wcs) / sizeof(wcs[0]));
   if (len != (size_t)-1) {
      wprintf(L"Wide string: %ls\n", wcs);
   } else {
      perror("Conversion error");
   }
   return 0;
}

輸出

以下是輸出:

Wide string: Hello, world!

示例 3

讓我們建立另一個 c 程式來轉換多位元組字串為寬字元字串,並顯示寬字元。

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

int main() {
   // Multibyte string
   const char *mbstr = "Hello World \n This is tutorialspoint"; 
   
   // Set locale for UTF-8
   setlocale(LC_ALL, "en_US.utf8"); 
   
   // Wide character array (adjust size as needed)
   wchar_t wcs[25];
   
   size_t len = mbstowcs(wcs, mbstr, sizeof(wcs) / sizeof(wcs[0]));
   if (len != (size_t)-1) {
      wprintf(L"Wide string: %ls\n", wcs);
   } else {
      perror("Conversion error");
   }
   return 0;
}

輸出

以下是輸出:

Wide string: Hello World
This is tut
廣告
© . All rights reserved.