當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 wcsrtombs用法及代碼示例


C語言wchar頭文件(wchar.h)中wcsrtombs函數的用法及代碼示例。

用法:

size_t wcsrtombs (char* dest, const wchar_t** src, size_t max, mbstate_t* ps);
將寬字符字符串轉換為多字節字符串
最多翻譯最大限度間接指向的C寬字符串的字符src到它們的多字節序列等效項,並將它們存儲在指向的緩衝區dest,如果終止則停止空寬字符遇到(也將轉換並存儲它,但不計入該函數返回的長度)。

該函數使用(並更新)由以下內容描述的換檔狀態ps。如果ps是一個空指針,該函數使用其自己的內部換檔狀態,隻有在調用此函數時才需要進行更改。

如果函數翻譯了整個C寬字符串(直到找到一個空寬字符), 和dest不是空指針,該函數集src設置為空指針值,並保證結果狀態為初始轉換狀態。

此函數的行為取決於LC_CTYPE所選類別C語言環境

這是可重啟的版本wcstombs(<cstdlib>)。

參數

dest
指向數組的指針char足以存儲C字符串的元素最大限度個字節。
如果這是一個空指針,則該函數不會存儲結果序列,但仍會計算需要多少字節來存儲翻譯的內容。src(範圍最大限度在這種情況下將被忽略)。
src
指向要轉換的C寬字符串的指針(間接指針)。
如果該函數過早停止轉換,則該函數將修改該值以指向轉換後的最後一個寬字符,如果該函數到達終止的空字符,則指向空指針。
max
要寫入的最大字節數dest
size_t是無符號整數類型。
ps
指向一個指針mbstate_t定義轉換狀態的對象。

返回值

寫入的字節數dest(不包括最終終止的空字符)。

如果在翻譯過程中該函數遇到的寬字符沒有等效的有效多字節序列,則該函數將設置errnoEILSEQ並返回(size_t)-1(src將指向無法翻譯的第一個字符。

注意size_t是無符號整數類型,因此可能返回的值都不小於零。

示例

/* wcsrtombs example */
#include <stdio.h>
#include <wchar.h>

int main() {
  const wchar_t str[] = L"wcstombs example";
  const wchar_t * p;
  mbstate_t mbs;
  char buffer[32];
  int ret;

  mbrlen (NULL,0,&mbs);    /* initialize mbs */

  printf ("wchar_t string: %ls \n",str);

  p = str;
  ret = wcsrtombs ( buffer, &p, sizeof(buffer), &mbs );
  if (ret==32) buffer[31]='\0';
  if (ret) printf ("multibyte string: %s \n",buffer);

  return 0;
}


輸出:

wchar_t string: wcstombs example 
multibyte string:  wcstombs example 

相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C wcsrtombs function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。