MFC程式設計 char*和CString兩種型別的互相轉換
阿新 • • 發佈:2019-01-27
問題
在程式設計時,因為用了c++作為邏輯層的編寫,其中的字串是以char*或者字元陣列的形式表現的,而不是以CString的物件表現的,尤其在從控制元件中讀取文字時,沒辦法使用等等,這裡,將介紹我使用的方法
char*到CString的轉換
char*是邏輯層向上提供到表現層的,通常是對資料進行了一定的處理後,需要在介面中呈現出來
//產生兩個個隨機長度的key字元陣列
char * key = test->genRandomString(128);
char * value = test->genRandomString(256);
//DO SOMETHING 對資料進行操作
………………
char temp[1024];
//將字元陣列,key,value按照一定的格式要求,連線起來
sprintf(temp,"%s%s%s%s%s%s","Key:",key,"------","Value",value,"插入成功!");
//生成我們需要的CString物件
CString str(temp);
上面的例子的核心是對sprintf函式的使用,其功能是將字元格式化輸出到字串中,然後以生成的字串為引數構造CString物件
CString到char*的轉換
這個是將從空間獲得的文字,經過轉換,到下一層去處理的一個過程
//CString物件
CString key;
//從控制元件中獲得需要的文字
GetDlgItemText(IDC_EDIT2,key);
//從這裡開始進行轉化,這是一個巨集定義
USES_CONVERSION;
//進行轉換
char* keyChar = T2A(key.GetBuffer(0));
key.ReleaseBuffer();
//轉化結束,進行對資料的操作
CString value(…………);
//對資料進行顯示
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(value);
結尾
以上是我在MFC的一次應用中遇到的問題,以及最終的解決方法,如果有不足或者更好的,歡迎留言交流