C++中char*與wchar_t*之間的轉換
關於C++中的char*與wchar_t*這兩種型別的相互轉換,網上說的大多很繁瑣,可行性也不高。下面這個方法是在MSDN裡面找到的,個人認為還比較不錯:
把char*轉換為wchar_t*
用stdlib.h中的mbstowcs_s函式,可以通過下面的例子瞭解其用法:
char *CStr = "string to convert";
size_t len = strlen(CStr) + 1;
size_t converted = 0;
wchar_t *WStr;
WStr=(wchar_t*)malloc(len*sizeof(wchar_t));
mbstowcs_s(&converted, WStr, len, CStr, _TRUNCATE);
其結果是WStr中儲存了CStr的wchar_t版本。
把wchar_t*轉換為char*
和上面的方法類似,用stdlib.h中的wcstombs_s函式,例子:
wchar_t *WStr = L"string to convert";
size_t len = wcslen(WStr) + 1;
size_t converted = 0;
char *CStr;
CStr=(char*)malloc(len*sizeof(char));
wcstombs_s(&converted, CStr, len, WStr, _TRUNCATE);
這時WStr中的內容將被轉化為char版本儲存在CStr中。
另外還可以通過流的方法來char*型別轉換為wchar_t*型別,但這樣的轉換得到的結果將是const型別,而類似的方法不能將wchar_t*型別轉換為char*型別。
把(const)char*轉換為const wchar_t*
需要用到 sstream 標頭檔案:
char *cstr="string to convert";
wstringstream wss;
wss<<cstr;
再呼叫wss.str().c_str(); 即可得到 const wchar_t* 型別的返回值。
雖然stringstream流不能將wchar_t*轉換成char*,但可以用來進行數值型別和字串之間的轉換,例如:
double d=2734792.934f;
stringstream ss;
ss<<d;
呼叫ss.str()可得到string型別字串 ”273479e+006”,又如:
string str("299792458");
stringstream ss;
long i=0;
ss<<str;
ss>>i;
此時i=299792458。
相關文章
- C++中string、char *、char[]、const char*的轉換C++
- c++各種字串互轉(char*、wchar_t*、CString、string、wstring、LPCWSTR)C++字串
- delphi:string,PChar,Array of Char 之間的轉換
- Java中Array與ArrayList之間的轉換Java
- string與char陣列相互轉換陣列
- android中String與InputStream之間的相互轉換方式Android
- c++中字串之string和charC++字串
- python str與bytes之間的轉換Python
- c++中string類物件和字元陣列之間的相互轉換C++物件字元陣列
- C++中string轉換為char*型別返回後亂碼問題C++型別
- char轉換成int
- c++中字元、字串和數字間的轉換C++字元字串
- mysql時間與字串之間相互轉換MySql字串
- CString與LPCWSTR、LPSTR、char*、LPWSTR等型別的轉換型別
- c++時間形式轉換C++
- Java 中 CLOB 和字串之間的轉換Java字串
- c++中幾種常見的型別轉換。int與string的轉換,float與string的轉換以及string和long型別之間的相互轉換。to_string函式的實現和應用。C++型別函式
- 【Go】IP地址轉換:數字與字串之間高效轉換Go字串
- 【C++】C++之型別轉換C++型別
- C++ unsigned char*轉化為string的形式C++
- Apple開發_NSImage與CIImage之間的相互轉換APP
- Json,String,Map之間的轉換JSON
- 角度和弧度之間的轉換
- Java之時間轉換Java
- 第42篇 字元與進位制之間的轉換字元
- C++中UNIX時間戳與日期互轉C++時間戳
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- String和Date、Timestamp之間的轉換
- SpringMVC的亂碼與時間轉換SpringMVC
- c++中數字和字串的轉換C++字串
- C++ 表示式中的型別轉換C++型別
- 7.GoLang中基本資料型別之間的轉換Golang資料型別
- 時間戳與yyyy-mm-dd hh:mm:ss格式之間的互相轉換時間戳
- python中的時間轉換,秒級時間戳轉string,string轉時間Python時間戳
- Map和String型別之間的轉換型別
- Excel中時間戳轉換時間Excel時間戳
- char[] 轉換string時的自動截斷問題
- 尤拉角和旋轉矩陣之間的轉換矩陣
- z變換與s變換之間的轉換(一些零碎且不嚴謹的想法)