C++多字节字符转换为宽字符的两种方法

2014-11-06 11:15:18 · 作者: · 浏览: 41

  目前知道有两种方式:可以提供宽字符与ANSI字符之间的转换,


  第一种由COM库提供的函数


  char* _com_util::ConvertBSTRToString(BSTR );


  BSTR _com_util::ConvertStringToBSTR(char*);


  Example


  // ConvertBSTRToString.cpp


  #include


  #include


  #pragma comment(lib, "comsupp.lib")


  int main()


  {


  BSTR bstrText = ::SysAllocString(L"Test");


  wprintf(L"BSTR text: %s\n", bstrText);


  char* lpszText2 = _com_util::ConvertBSTRToString(bstrText);


  printf("char * text: %s\n", lpszText2);


  SysFreeString(bstrText);


  delete[] lpszText2;


  }


  Output


  BSTR text: Test


  char * text: Test


  第二种标准库提供的函数


  将宽字符串wcstr转换为ANSI字符串mbstr


  size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );