關於wchar_t 的輸出及 wchar_t* 與 char*之間的相互轉換
本地化有三條語句可以使用,任取其一。最後一句是全域性函式,前兩個是wcout的一個成員函式的兩種表達方式。
std::wcout.imbue(std::locale("chs"));
std::wcout.imbue(std::locale(""));
setlocale(LC_ALL,"Chinese-simplified");
舉例:
int main()
{
std::wchar_t a =L'中';
std::wcout.imbue(std::locale("chs"));
//std::wcout.imbue(std::locale(""));
//setlocale(LC_ALL,"Chinese-simplified");
std::wcout << a <<std::endl;
system("pause");
return 0;
}
也談C++中char*與wchar_t*之間的轉換
2008-06-20 21:04:14| 分類: 技術創新 | 標籤:c++ 程式設計 電腦 |字號 訂閱
關於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。
相關推薦
【PowerShell】ASCII與Char之間的轉換
clas cnblogs class pan bsp 之間 power code log 1 [char[]][int[]]$char=65..90 2 $char -join ‘,‘ 3 [int[]][char[]]$ascii=$char 4 $ascii -joi
PHP陣列與物件之間相互轉換
/** * 陣列 轉 物件 * * @param array $arr 陣列 * @return object */ function ar
win32應用程式,TCHAR與CHAR的相互轉換
TCHR 與 CHAR相互轉換 含義 TChar to Char CHAR To TCHAR 含義 TCHAR:在Unicode編碼下,為寬字元wchar;在Ansi編碼下,為字元char。 CHAR:是在Ansi編碼下字串格式。
base64編碼與圖片之間相互轉換
Base64是網路上最常見的用於傳輸8Bit位元組碼的編碼方式之一 一、將base64轉換成圖片 只需要在img 標籤中引入即可,注意要加上標明字首(data:image/png;base64),否則並不知道,這串程式碼是幹啥的 如: 二、將圖片轉換成base64 通過ca
std::string 與 char* 之間的轉換
std::string 是c++標準庫裡面其中一個,封裝了對字串的操作 1:把string轉換為char*有三種方法: 1. .data 2. .c_str 3. .copy using namesapce std; string str = "h
QString與char *的相互轉換
注:如下方法應該是qt3.0的,一些方法大同小異,請參考qt4的類文件說明。 How can I convert a QString to char* and vice versa ?(trolltech) Answer:In order to convert a QString to a char*,
C# String 與 Char[] 陣列 相互轉換
string 轉換成 Char[] string ss = "abcdefg"; char[] cc = ss.ToCharArray(); Char[] 轉換成string string s = new string(cc); byte[] 與 string
Unicode下CString與char *之間的轉換
1、Unicode下CString轉換為char * 方法一:使用API:WideCharToMultiByte進行轉換 CStringstr = _T("D:\\校內專案\\QQ.bmp"); //注意:以下n和len的值大小不同,n是按字元計
CString與char的相互轉換
CString CharToCString(char *pText) {int iLength = 0; wchar_t *pwText = NULL;CString csText = _T("");/* Get the number of wide charac
CString與char之間的轉換
1、多字符集設定下:CString To char*:1)、CString str; char *buf = str.GetBuffer();2)、CString str;char *buf = (LPSTR)(LPCSTR)str;char* To CString1)、c
DataTable 與 實體之間相互轉換
一:ConvertDataTableToModel: 主要將DataTable中改動的內容同步到實體類集合中 /// <summary> /// 將DB中改動的內容同步到泛型集合中 /// </summary>
CString與char[] 的相互轉換方法以及結尾亂碼問題的分析解決
這是一個很常見的問題,下面記錄下我的解決方案。 一、CString 轉化成char[] 方法一:運用 CString.GetBuffer(0) 與 strcpy CString str; int len = str.GetLength(); char* arr = n
.mat,.txt,.csv 資料轉換為weka中的arff格式及matlab和Weka之間相互轉換格式
function r = CSVtoARFF (data, relation, type) % csv to arff file converter % load the csv data [rows cols] = size(data); % op
QString與char *之間的轉換
1.QString轉char * 先將QString轉換為QByteArray,再將QByteArray轉換為char *。 注意:不能用下面的轉換形式char *mm = str.toLatin1().data();。因為這樣的話,str.toLatin1()得到的QByteArray型別結果就不能儲存,最
XStream實現javabean與xml之間相互轉換
XStream是thoughtworks公司釋出的一個簡單的Java類庫,用於將JavaBean序列化為XML,並且能夠將XML檔案反向轉換為JavaBean. 例項: user.java impor
MFC中 CString與Char[] 的相互轉換
為了簡化操作,我寫成了兩個函式: //CString轉Char[] 返回陣列首元素地址 char * CSocket_ClientDlg::CStringToCharArray(CString str
關於wchar_t 的輸出及 wchar_t* 與 char*之間的相互轉換
wchar_t 定義的變數之所以不能輸出呢?我查了一下資料,就是說寬字元型別要本地化,否則輸不出想要結果。 本地化有三條語句可以使用,任取其一。最後一句是全域性函式,前兩個是wcout的一個成員函式的兩種表達方式。 std::wcout.imbue(std::locale(
QT char*,wchar_t*與QString之間的轉換
//QString to wchar_t: const wchar_t * encodedName = reinterpret_cast<const wchar_t *>(fileName.utf16()); //QString to char * (general case):
VC之CString,wchar_t,int,string,char*之間的轉換(轉帖)
CString 轉 wchar_t CString path = "asdf"; wchar_t wstr[256] = path.AllocSysString(); 或者: wchar_t wcstring[256]; MultiByteToWideChar(CP_ACP,0,path,-1,wcstri
RGB與HSV之間的轉換公式及顏色表
bsp 公式 blog log b- size 分享 ont idt RGB & HSV 英文全稱 RGB - Red, Green, Blue HSV - Hue, Saturation, Value HSV --> RGB 轉換公式 HSV --&g