#include
#include
#include
#include
#include
char sbuf[20]
=;// 在窄字串中乙個中文字元就是兩個位元組,所以 strlen("中國") = 4
strcpy_s
(sbuf,
strlen
("我愛中國china")+
1,"我愛中國china");
cout <<
strlen
(sbuf)
<< endl;
// 輸出 13
/*! 返回值wlen 是窄字串轉換成寬字串後,寬字串buffer的長度
*/ dword wlen =
multibytetowidechar
(cp_acp,
0, sbuf,
strlen
(sbuf)
,null,0
);cout << wlen << endl;
// 下面的寬字串定義的大小 wlen 剛好容納窄字串不包括結尾null的有效長度
wchar_t
* wstr =
newwchar_t
[wlen]
;multibytetowidechar
(cp_acp,
0, sbuf,
strlen
(sbuf)
, wstr, wlen);
cout <<
wcslen
(wstr)
<< endl;
// 這個輸出是錯誤的,不等於 wlen
// wcout 以下處理可以列印寬字串
wcout.
imbue
(locale(""
, lc_ctype));
wcout << wstr << endl;
variant var1;
var1.lval =
123467
; variant var2;
var2.bstrval = l"我愛中國china"
; variant var3;
var3.bstrval = l"我不愛日本japan"
;wchar_t
* lval =
newwchar_t[10
];wmemset
(lval,0,
10);// 格式化字串 第二個引數是要格式化字元的長度 + 1
// 就剛好拷貝格式化字串不包括結尾null到lval
swprintf
(lval,
11, l"%ld"
, var1.lval)
;// long 轉換成 wchar_t 第乙個是lon**alue 第三個引數size_t是第二個引數wchar_t的長度
// 第四個是進製
_ltow_s
(var1.lval, lval,10,
10); cout <<
"good:"
<<
wcslen
(lval)
<< endl;
int wlen =
wcslen
(lval)
+wcslen
(var2.bstrval)
+wcslen
(var3.bstrval)
;delete
lval;
// 上面這麼麻煩的原因就是為了合理申請不多不少,剛好需要的堆的大小 wlen
wchar_t
* result =
newwchar_t
[wlen]
;wmemset
(result,
0, wlen)
;// 把com介面出來的variant出參或入參,統一格式化字串wchar_t
swprintf
(result, wlen +
1, l"%ld%ls%ls"
, var1.lval, var2.bstrval, var3.bstrval)
; wcout.
imbue
(locale(""
, lc_ctype));
wcout <<
"result:"
<< result << endl;
wstring love;
variant var1;
var1.lval =
1234
; variant var2;
var2.bstrval = l"我愛上海shanghai"
; variant var3;
var3.bstrval = l"我愛奧蘭多olando"
;wchar_t
* haha =
newwchar_t[10
];_ltow_s
(var1.lval, haha,10,
10); love.
(haha)
; love.
(var2.bstrval)
; love.
(var3.bstrval)
; wcout.
imbue
(locale(""
, lc_ctype));
wcout << love << endl;
php中文字元字串反轉字串
header content type text html charset utf 8 s 這是我的技術部落格,歡迎多多來訪!function str rev str 用mb strlen函獲取算utf8字串的長度 length mb strlen str,utf 8 宣告乙個陣列備用 arr ar...
C 判斷中文字元(字串)
it168技術文件 在unicode 字串中,中文的範圍是在4e00.9fff cjk unified ideographs。通過對字元的unicode編碼進行判斷來確定字元是否為中文。protected bool ischineseletter string input,intindex else...
C 判斷中文字元(字串)
方法一 原文 在unicode 字串中,中文的範圍是在4e00.9fff cjk unified ideographs。通過對字元的unicode編碼進行判斷來確定字元是否為中文。protected bool ischineseletter string input,int index else r...