目前共有6篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:台灣正體▼
 
點擊 回復
793 5
【函數】寬字節CString轉char*
亮出13cm 二十級
1樓 發表于:2012-7-24 16:21

看來char*與char[]是兩種不同的字符串。廢話少說先上函數代碼:

 

 

 

void W2C(const wchar_t* pwstr,char* pcstr,size_t len)
{
 int nlength=wcslen(pwstr);
 unsigned int nbytes=WideCharToMultiByte(0,0,pwstr,nlength,NULL,0,NULL,NULL);
 if (nbytes>len)
  nbytes=len;
 WideCharToMultiByte(0,0,pwstr,nlength,pcstr,nbytes,NULL,NULL);
}
char* CStringToChar(CString* str)
{
 char* ch=0x00; //賦初值避免警告
 size_t len=str->GetLength();
 wchar_t* wch=str->GetBuffer();
 ch=new char[len+1];
 W2C(wch,ch,len);
 ch[len]='\0';
 return ch;
}

亮出13cm 二十級
2樓 發表于:2012-7-24 16:22

用法很簡單。

 

CString str=_T("dp=06DDRT&c=70");
char* ch=CStringToChar(&str);

 
亮出13cm 二十級
3樓 發表于:2012-7-24 16:23
————————————————————完畢————————————
 
亮出13cm 二十級
4樓 發表于:2012-7-24 16:24
CStringToChar函數就是_T的逆運算
 
亮出13cm 二十級
5樓 發表于:2014-11-16 01:09
char*與char[]轉換起來很麻煩,所以不要認為這兩傢伙就是一個類型
 
亮出13cm 二十級
6樓 發表于:2016-6-20 22:49
char *和char[]的區別:
https://zh.arslanbar.net/post.php?t=24190
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:793 回複數:5
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-6-20 22:49
精品區:函數代碼庫
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。