1. 程式人生 > >MFC程式設計 char*和CString兩種型別的互相轉換

MFC程式設計 char*和CString兩種型別的互相轉換

問題

在程式設計時,因為用了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的一次應用中遇到的問題,以及最終的解決方法,如果有不足或者更好的,歡迎留言交流