(轉載)wchar_t類型和char類型變量相互轉換

轉載鏈接:https://www.cnblogs.com/zhangdewang/p/11420410.html和https://www.cnblogs.com/lanhaicode/p/10574260.html

1、窄字符char與寬字符wchar_t的區別

  (1)窄字符char,佔1個字節css

  char的範圍有兩種:html

  signed char:帶符號,取值範圍(-128-127);數組

  unsigned char:不帶符號,取值範圍(0-255)。函數

  賦值方法: spa

char cStr[20] = "Hello world!";

  (2)寬字符wchar_t ,佔2個字節code

  wchar_t是Unicode字符的數據類型,它實際定義爲:htm

typedef unsigned short wchar_t;

  賦值方法:blog

wchar_t wcStr[20] = L"Hello world!";

  窄字符相比,前面多了一個大寫的L這個L的做用就是告訴編譯器,這個字符串按照寬字符來存儲(一個字符佔兩個字節)。字符串

 

2、寬字符wchar_t和窄字符char相互轉換

 (1)窄字節轉換成寬字節原型

  描述

  C 庫函數 size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) 把參數 str 所指向的多字節字符的字符串轉換爲參數 pwcs 所指向的數組。

  聲明

    下面是 mbstowcs() 函數的聲明。

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

  參數

  • pwcs -- 指向一個 wchar_t 元素的數組,數組長度足以存儲一個最大字符長度的寬字符串。
  • str -- 要被轉換的多字節字符字符串。
  • n -- 要被轉換的最大字符數。

  返回值

  該函數返回轉換的字符數,不包括結尾的空字符。若是遇到一個無效的多字節字符,則返回 -1 值。

 

  (2)寬字節轉換成窄字節

  描述

  C 庫函數 size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) 把寬字符字符串 pwcs 轉換爲一個 str 開始的多字節字符串。最多會有 n個字節被寫入 str 中。

  聲明

  下面是 wcstombs() 函數的聲明。

size_t wcstombs(char *str, const wchar_t *pwcs, size_t n)

  參數

  • str -- 指向一個 char 元素的數組,至少有 n 字節長。
  • pwcs -- 要被轉換的寬字符字符串。
  • n -- 要被寫入到 str 中的最大字節數。

  返回值

  該函數返回轉換和寫入到 str 中的字節數,不包括結尾的空字符。若是遇到一個無效的多字節字符,則返回 -1 值。

 

3、寬字符wchar_t的使用方法

函數名 函數原型 函數功能 返回值
wcscat wchar_t *wcscat(wchar_t *s1, const wchar_t *s2);

將s2所指示的字符串鏈接到s1後面 

s1所指字符串的首地址 
wcschr wchar_t *wcschr(const wchar_t *s, wchar_t c);

 在s字符串中找到c字符第一次出現的位置

若找到返回該字符的地址,不然返回NULL 
wcscmp int wcscmp(const wchar_t *s1, const wchar_t *s2); 讓字符串s1與字符串s2進行比較  s1<s2,返回負數;s1 == s2,返回0;s1 > s2返回正數 
wcscpy wchar_t *wcscpy(wchar_t *s1, const wchar_t *s2);  將s2所指字符串覆蓋方式複製到s1中 s1所指字符串的首地址 
wcslen size_t wcslen(const wchar_t *s);  求s所指字符串的長度 返回有效字符的個數 
wcsstr wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);  找出字符串s2在字符串s1中第一次出現的位置 若找到返回該位置的地址,不然返回NULL 
相關文章
相關標籤/搜索