c++字符char轉換爲wchar(wcstombs)osg

wcstombs示例:

/* wcstombs example */
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* wcstombs, wchar_t(C) */

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

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

  ret = wcstombs ( buffer, str, sizeof(buffer) );
  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
	//mbstowcs == multibyte string to wide character string
	int requiredSize = mbstowcs(NULL, string, 0);    //如果mbstowcs第一參數爲NULL那麼返回字符串的數目  requiredSize爲string轉爲寬字符後的寬字符字符數,注意這個數目不包含結尾符
	wchar_t* wText = new wchar_t[requiredSize + 1];    //+1以保留一個位置放置結尾符 0/
	mbstowcs(wText, string, requiredSize + 1);//由char轉換成wchar類型
void ArrowMark::createContent(osgText::Text& textObject, const char* string)  //將多字節字符轉化爲寬字符
{
	//mbstowcs == multibyte string to wide character string
	int requiredSize = mbstowcs(NULL, string, 0);    //如果mbstowcs第一參數爲NULL那麼返回字符串的數目  requiredSize爲string轉爲寬字符後的寬字符字符數,注意這個數目不包含結尾符
	wchar_t* wText = new wchar_t[requiredSize + 1];    //+1以保留一個位置放置結尾符 0/
	mbstowcs(wText, string, requiredSize + 1);//由char轉換成wchar類型
	textObject.setText(wText);  //用寬字節字符設置Text對象的內容
	delete wText;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章