首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言寬字符類型wchar_t用法詳解

     編輯:關於C語言

基本概念

  • char 永遠佔 1 字節,用於窄字符(ASCII/多字節編碼)。
  • wchar_t 為寬字符類型,通常佔 2 或 4 字節(視平台),用於 Unicode 字符。
  • wchar_t 非內置關鍵字,定義於 <stddef.h>(或 <wchar.h>)。

字面量與格式化

  • 寬字符字面量前綴 L:L'A'、L"Hello"。
  • printf 輸出寬字符串用 %S(大寫),窄字符串用 %s。
  • 寬字符單字符輸出可用 %lc 或 %C(MS 扩展)。

示例代碼

#include <stdio.h>
#include <stddef.h>  // 或 <wchar.h>

int main(void) {
    wchar_t wc = L'A';
    wchar_t ws[] = L"C++Builder 2009";

    printf("%lc\n", wc);  // 輸出單個寬字符
    printf("%S\n", ws);   // 輸出寬字符串
    return 0;
}

相關函數族

窄字符版寬字符版功能
strlenwcslen字符串長度
strcpywcscpy字符串拷貝
strcmpwcscmp字符串比較
printfwprintf格式化輸出
scanfwscanf格式化輸入
fopen_wfopen文件操作 (Windows)

多字節與寬字符轉換

// 多字節 -> 寬字符
size_t mbsrtowcs(wchar_t *dst, const char **src, size_t len, mbstate_t *ps);

// 寬字符 -> 多字節
size_t wcsrtombs(char *dst, const wchar_t **src, size_t len, mbstate_t *ps);

// Windows API 直接轉換
int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPCH lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar);

注意事項

  • wchar_t 大小不固定:Windows 2 字節 (UTF-16),Linux 通常 4 字節 (UTF-32)。
  • 跨平台代碼建議使用固定寬度類型 char16_t/char32_t (C11) 或 UTF-8 窄字符串 + ICU 庫。
  • 標準輸入輸出流(stdin/stdout)默認窄字符,寬字符 I/O 需調用 setlocale 或使用 wprintf 族函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved