CString,string,char*之间的转换(转)
Bluestorm's Space
隨筆 - 588??文章 - 3??評論 - 137CString,string,char*之間的轉(zhuǎn)換(轉(zhuǎn))
這三種類型各有各的優(yōu)點,比如CString比較靈活,是基于MFC常用的類型,安全性也最高,但可移植性最差。string是使用STL時必不可少的類型,所以是做工程時必須熟練掌握的;char*是從學習C語言開始就已經(jīng)和我們形影不離的了,有許多API都是以char*作為參數(shù)輸入的。所以熟練掌握三者之間的轉(zhuǎn)換十分必要。
以下我用簡單的圖示指出三者之間的關(guān)系,并以標號對應(yīng)轉(zhuǎn)換的方法。
1 string to CString???
??CString.format("%s",string.c_str());?
2 CString to string
string str(CString.GetBuffer(str.GetLength()));
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 CString to char *
strcpy(char,CString,sizeof(char));
6 char * to CString
CString.format("%s",char*);
CString的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *轉(zhuǎn)換時,要把char定義成為const char*,這樣是最安全的。 以上函數(shù)UNICODE編碼也沒問題:unicode下照用,加個_T()宏就行了,像這樣子_T("%s") 補充: CString 可能是 CStringW/CStringA,在與 string 轉(zhuǎn)換時,如果是 CStringW,還涉及編碼轉(zhuǎn)換問題。下面以 CStringA 來說明。 1 string to CString??CString.format("%s",string.c_str()); CStringA = string.c_str() 就可以了
2 CString to string
string str(CString.GetBuffer(str.GetLength())); GetBuffer 有參數(shù)的話,可能導(dǎo)致內(nèi)部的分配空間動作,要進行后續(xù) ReleaseBuffer 操作。
string = CStringA
string = CStringA.GetBuffer();
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 CString to char *
strcpy(char?*,CString,sizeof(char));
按照 3 風格,這里應(yīng)該 char *? = CStringA; 或者 char *p = CStringA.GetBuffer(); 6 char * to CString
CStringA = char * 就可以了 分類:?C/C++,算法 / 數(shù)據(jù)結(jié)構(gòu) 好文要頂?關(guān)注我?收藏該文?? petercao
關(guān)注 - 148
粉絲 - 406 +加關(guān)注 2 0 ??上一篇:C語言itoa()函數(shù)和atoi()函數(shù)詳解(整數(shù)轉(zhuǎn)字符C實現(xiàn))
??下一篇:簡明Vim練級攻略(轉(zhuǎn))
posted @?2013-07-03 04:03?petercao?閱讀(41192) 評論(0)?編輯?收藏 刷新評論刷新頁面返回頂部 注冊用戶登錄后才能發(fā)表評論,請?登錄?或?注冊,訪問網(wǎng)站首頁。 最新IT新聞:
·?小米電視4正式宣布:LED/4K/無邊框/超薄
·?“Apple支持”應(yīng)用更新:可預(yù)約“天才吧”售后維修
·?錘子聯(lián)合YunOS:下半年發(fā)力
·?三星官方開箱Galaxy S8/S8+ 送AKG專業(yè)調(diào)音耳機
·?Chrome 59 Beta發(fā)布 主要有三大新特性
??更多新聞... 最新知識庫文章:
·?唱吧DevOps的落地,微服務(wù)CI/CD的范本技術(shù)解讀
·?程序員,如何從平庸走向理想?
·?我為什么鼓勵工程師寫blog
·?怎么輕松學習JavaScript
·?如何打好前端游擊戰(zhàn)
??更多知識庫文章...
公告
昵稱:petercao園齡:7年6個月
粉絲:406
關(guān)注:148 +加關(guān)注
| |||||||||
| 30 | 1 | 2 | 3 | 4 | 5 | 6 | |||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
| 28 | 29 | 30 | 31 | 1 | 2 | 3 | |||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
搜索
? ?常用鏈接
- 我的隨筆
- 我的評論
- 我的參與
- 最新評論
- 我的標簽
隨筆分類
- AI(1)
- Android(276)
- AR&VR(1)
- C# & .NET(60)
- C/C++(41)
- Editor/IDE(9)
- HTML5/WEB(19)
- iOS(5)
- Java / J2EE(114)
- Linux(53)
- Misc(39)
- OS/操作系統(tǒng)(6)
- Python(5)
- 版本控制(16)
- 編譯原理/編程語言(7)
- 嵌入式(7)
- 軟件工程 / UML建模(12)
- 軟件項目管理(1)
- 設(shè)計模式(3)
- 數(shù)據(jù)庫(12)
- 算法 / 數(shù)據(jù)結(jié)構(gòu)(10)
- 網(wǎng)絡(luò)&軟件架構(gòu)(2)
- 網(wǎng)絡(luò)協(xié)議(10)
- 云計算(4)
- 職業(yè)生涯規(guī)劃(9)
隨筆檔案
- 2017年5月 (7)
- 2017年4月 (22)
- 2017年3月 (15)
- 2017年2月 (11)
- 2017年1月 (15)
- 2016年12月 (12)
- 2016年11月 (3)
- 2016年10月 (13)
- 2016年9月 (27)
- 2016年8月 (20)
- 2016年7月 (13)
- 2016年5月 (1)
- 2016年4月 (9)
- 2016年3月 (1)
- 2015年11月 (1)
- 2015年10月 (10)
- 2015年9月 (1)
- 2015年8月 (5)
- 2015年6月 (1)
- 2015年5月 (1)
- 2015年4月 (2)
- 2015年3月 (2)
- 2015年2月 (1)
- 2015年1月 (2)
- 2014年12月 (1)
- 2014年10月 (3)
- 2014年9月 (1)
- 2014年7月 (3)
- 2014年6月 (2)
- 2014年5月 (30)
- 2014年4月 (47)
- 2014年3月 (10)
- 2014年2月 (1)
- 2014年1月 (11)
- 2013年12月 (3)
- 2013年11月 (5)
- 2013年10月 (4)
- 2013年9月 (33)
- 2013年8月 (16)
- 2013年7月 (17)
- 2013年6月 (6)
- 2013年5月 (21)
- 2013年4月 (12)
- 2013年3月 (15)
- 2013年1月 (1)
- 2012年12月 (3)
- 2012年11月 (2)
- 2012年10月 (13)
- 2012年9月 (20)
- 2012年8月 (14)
- 2012年7月 (8)
- 2012年6月 (2)
- 2012年5月 (14)
- 2012年4月 (10)
- 2012年3月 (8)
- 2012年1月 (2)
- 2011年12月 (7)
- 2011年11月 (5)
- 2011年10月 (4)
- 2011年9月 (4)
- 2011年8月 (15)
- 2011年7月 (11)
- 2011年6月 (9)
文章分類
- C/C++(1)
相冊
- MyPhoto
最新評論
- 1. Re:程序員的生存發(fā)展和出路
- 感覺越干越看不到未來,做技術(shù)的出路還是不知道在哪里
- --Andye
- 2. Re:程序員的生存發(fā)展和出路
- 寫的很對,要成為一個幫人解問題,被人依賴的人
- --Andye
- 3. Re:怎么修改chrome瀏覽器的字體
- Chrome字體設(shè)置:「Arial、Georgia、Arial、Consolas」或「Verdana、Georgia、Verdana、Consolas」「微軟雅黑、華文宋體、微軟雅黑、Consolas......
- --petercao
- 4. Re:使用EasyBCD完美實現(xiàn)Windows7與Linux雙系統(tǒng)
- 在fedora25下,kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/deepin.iso ro quiet splash locale=z......
- --lunarcraft
- 5. Re:Android Studio 換主題 + 背景圖片 + 去掉白色豎線
- plugins:android code generatorandroid material design icon generatorandroid ndk supportandroid suppo......
- --petercao
閱讀排行榜
- 1. java中重載與重寫的區(qū)別(222258)
- 2. px 與 dp, sp換算公式?(138534)
- 3. IntelliJ IDEA 快捷鍵和設(shè)置(133316)
- 4. 導(dǎo)入Eclipse工程 到 Android Studio(90684)
- 5. C語言itoa()函數(shù)和atoi()函數(shù)詳解(整數(shù)轉(zhuǎn)字符C實現(xiàn))(87148)
評論排行榜
- 1. java中重載與重寫的區(qū)別(17)
- 2. java中equals方法的用法以及==的用法(轉(zhuǎn))(7)
- 3. 大數(shù)據(jù)量分頁查詢方法(轉(zhuǎn))(7)
- 4. Ubuntu 下載 & 編譯 Android5.1 源碼(7)
- 5. C# 編寫Windows Service(windows服務(wù)程序)(6)
推薦排行榜
- 1. java中重載與重寫的區(qū)別(27)
- 2. IntelliJ IDEA 快捷鍵和設(shè)置(14)
- 3. java中equals方法的用法以及==的用法(轉(zhuǎn))(12)
- 4. Java中abstract class 和 interface 的解釋和他們的異同點(轉(zhuǎn))(9)
- 5. C# 編寫Windows Service(windows服務(wù)程序)(8)
Bluestorm's Space
隨筆 - 588??文章 - 3??評論 - 137CString,string,char*之間的轉(zhuǎn)換(轉(zhuǎn))
這三種類型各有各的優(yōu)點,比如CString比較靈活,是基于MFC常用的類型,安全性也最高,但可移植性最差。string是使用STL時必不可少的類型,所以是做工程時必須熟練掌握的;char*是從學習C語言開始就已經(jīng)和我們形影不離的了,有許多API都是以char*作為參數(shù)輸入的。所以熟練掌握三者之間的轉(zhuǎn)換十分必要。
以下我用簡單的圖示指出三者之間的關(guān)系,并以標號對應(yīng)轉(zhuǎn)換的方法。
1 string to CString???
??CString.format("%s",string.c_str());?
2 CString to string
string str(CString.GetBuffer(str.GetLength()));
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 CString to char *
strcpy(char,CString,sizeof(char));
6 char * to CString
CString.format("%s",char*);
CString的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *轉(zhuǎn)換時,要把char定義成為const char*,這樣是最安全的。 以上函數(shù)UNICODE編碼也沒問題:unicode下照用,加個_T()宏就行了,像這樣子_T("%s") 補充: CString 可能是 CStringW/CStringA,在與 string 轉(zhuǎn)換時,如果是 CStringW,還涉及編碼轉(zhuǎn)換問題。下面以 CStringA 來說明。 1 string to CString??CString.format("%s",string.c_str()); CStringA = string.c_str() 就可以了
2 CString to string
string str(CString.GetBuffer(str.GetLength())); GetBuffer 有參數(shù)的話,可能導(dǎo)致內(nèi)部的分配空間動作,要進行后續(xù) ReleaseBuffer 操作。
string = CStringA
string = CStringA.GetBuffer();
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 CString to char *
strcpy(char?*,CString,sizeof(char));
按照 3 風格,這里應(yīng)該 char *? = CStringA; 或者 char *p = CStringA.GetBuffer(); 6 char * to CString
CStringA = char * 就可以了 分類:?C/C++,算法 / 數(shù)據(jù)結(jié)構(gòu) 好文要頂?關(guān)注我?收藏該文?? petercao
關(guān)注 - 148
粉絲 - 406 +加關(guān)注 2 0 ??上一篇:C語言itoa()函數(shù)和atoi()函數(shù)詳解(整數(shù)轉(zhuǎn)字符C實現(xiàn))
??下一篇:簡明Vim練級攻略(轉(zhuǎn))
posted @?2013-07-03 04:03?petercao?閱讀(41192) 評論(0)?編輯?收藏 刷新評論刷新頁面返回頂部 注冊用戶登錄后才能發(fā)表評論,請?登錄?或?注冊,訪問網(wǎng)站首頁。 最新IT新聞:
·?小米電視4正式宣布:LED/4K/無邊框/超薄
·?“Apple支持”應(yīng)用更新:可預(yù)約“天才吧”售后維修
·?錘子聯(lián)合YunOS:下半年發(fā)力
·?三星官方開箱Galaxy S8/S8+ 送AKG專業(yè)調(diào)音耳機
·?Chrome 59 Beta發(fā)布 主要有三大新特性
??更多新聞... 最新知識庫文章:
·?唱吧DevOps的落地,微服務(wù)CI/CD的范本技術(shù)解讀
·?程序員,如何從平庸走向理想?
·?我為什么鼓勵工程師寫blog
·?怎么輕松學習JavaScript
·?如何打好前端游擊戰(zhàn)
??更多知識庫文章...
公告
昵稱:petercao園齡:7年6個月
粉絲:406
關(guān)注:148 +加關(guān)注
| |||||||||
| 30 | 1 | 2 | 3 | 4 | 5 | 6 | |||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
| 28 | 29 | 30 | 31 | 1 | 2 | 3 | |||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
搜索
? ?常用鏈接
- 我的隨筆
- 我的評論
- 我的參與
- 最新評論
- 我的標簽
隨筆分類
- AI(1)
- Android(276)
- AR&VR(1)
- C# & .NET(60)
- C/C++(41)
- Editor/IDE(9)
- HTML5/WEB(19)
- iOS(5)
- Java / J2EE(114)
- Linux(53)
- Misc(39)
- OS/操作系統(tǒng)(6)
- Python(5)
- 版本控制(16)
- 編譯原理/編程語言(7)
- 嵌入式(7)
- 軟件工程 / UML建模(12)
- 軟件項目管理(1)
- 設(shè)計模式(3)
- 數(shù)據(jù)庫(12)
- 算法 / 數(shù)據(jù)結(jié)構(gòu)(10)
- 網(wǎng)絡(luò)&軟件架構(gòu)(2)
- 網(wǎng)絡(luò)協(xié)議(10)
- 云計算(4)
- 職業(yè)生涯規(guī)劃(9)
隨筆檔案
- 2017年5月 (7)
- 2017年4月 (22)
- 2017年3月 (15)
- 2017年2月 (11)
- 2017年1月 (15)
- 2016年12月 (12)
- 2016年11月 (3)
- 2016年10月 (13)
- 2016年9月 (27)
- 2016年8月 (20)
- 2016年7月 (13)
- 2016年5月 (1)
- 2016年4月 (9)
- 2016年3月 (1)
- 2015年11月 (1)
- 2015年10月 (10)
- 2015年9月 (1)
- 2015年8月 (5)
- 2015年6月 (1)
- 2015年5月 (1)
- 2015年4月 (2)
- 2015年3月 (2)
- 2015年2月 (1)
- 2015年1月 (2)
- 2014年12月 (1)
- 2014年10月 (3)
- 2014年9月 (1)
- 2014年7月 (3)
- 2014年6月 (2)
- 2014年5月 (30)
- 2014年4月 (47)
- 2014年3月 (10)
- 2014年2月 (1)
- 2014年1月 (11)
- 2013年12月 (3)
- 2013年11月 (5)
- 2013年10月 (4)
- 2013年9月 (33)
- 2013年8月 (16)
- 2013年7月 (17)
- 2013年6月 (6)
- 2013年5月 (21)
- 2013年4月 (12)
- 2013年3月 (15)
- 2013年1月 (1)
- 2012年12月 (3)
- 2012年11月 (2)
- 2012年10月 (13)
- 2012年9月 (20)
- 2012年8月 (14)
- 2012年7月 (8)
- 2012年6月 (2)
- 2012年5月 (14)
- 2012年4月 (10)
- 2012年3月 (8)
- 2012年1月 (2)
- 2011年12月 (7)
- 2011年11月 (5)
- 2011年10月 (4)
- 2011年9月 (4)
- 2011年8月 (15)
- 2011年7月 (11)
- 2011年6月 (9)
文章分類
- C/C++(1)
相冊
- MyPhoto
最新評論
- 1. Re:程序員的生存發(fā)展和出路
- 感覺越干越看不到未來,做技術(shù)的出路還是不知道在哪里
- --Andye
- 2. Re:程序員的生存發(fā)展和出路
- 寫的很對,要成為一個幫人解問題,被人依賴的人
- --Andye
- 3. Re:怎么修改chrome瀏覽器的字體
- Chrome字體設(shè)置:「Arial、Georgia、Arial、Consolas」或「Verdana、Georgia、Verdana、Consolas」「微軟雅黑、華文宋體、微軟雅黑、Consolas......
- --petercao
- 4. Re:使用EasyBCD完美實現(xiàn)Windows7與Linux雙系統(tǒng)
- 在fedora25下,kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/deepin.iso ro quiet splash locale=z......
- --lunarcraft
- 5. Re:Android Studio 換主題 + 背景圖片 + 去掉白色豎線
- plugins:android code generatorandroid material design icon generatorandroid ndk supportandroid suppo......
- --petercao
閱讀排行榜
- 1. java中重載與重寫的區(qū)別(222258)
- 2. px 與 dp, sp換算公式?(138534)
- 3. IntelliJ IDEA 快捷鍵和設(shè)置(133316)
- 4. 導(dǎo)入Eclipse工程 到 Android Studio(90684)
- 5. C語言itoa()函數(shù)和atoi()函數(shù)詳解(整數(shù)轉(zhuǎn)字符C實現(xiàn))(87148)
評論排行榜
- 1. java中重載與重寫的區(qū)別(17)
- 2. java中equals方法的用法以及==的用法(轉(zhuǎn))(7)
- 3. 大數(shù)據(jù)量分頁查詢方法(轉(zhuǎn))(7)
- 4. Ubuntu 下載 & 編譯 Android5.1 源碼(7)
- 5. C# 編寫Windows Service(windows服務(wù)程序)(6)
推薦排行榜
- 1. java中重載與重寫的區(qū)別(27)
- 2. IntelliJ IDEA 快捷鍵和設(shè)置(14)
- 3. java中equals方法的用法以及==的用法(轉(zhuǎn))(12)
- 4. Java中abstract class 和 interface 的解釋和他們的異同點(轉(zhuǎn))(9)
- 5. C# 編寫Windows Service(windows服務(wù)程序)(8)
總結(jié)
以上是生活随笔為你收集整理的CString,string,char*之间的转换(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.1 rtthread pin设备详解
- 下一篇: DM8168_DVR_RDK 环境配置