VC中的字元及轉換

2021-04-15 23:11:12 字數 1711 閱讀 2301

1

、cstring to 

char

*//經過型別強制轉換,可以將cstring型別轉換成char*,例如:

cstring cstr ="

hello,world!";

char

*zstr =(

char

*)(lpctstr)cstr;

//cstring與int轉換

intstringtoint(cstring source)

2、char

*to cstring

//char*型別可以直接給cstring,完成自動轉換,例如:

char

*zstr ="

hello,world!";

cstring cstr 

=zstr;

3、cstring to lpcstr

//將cstring轉換成lpcstr,需要獲得cstring的長度cstring cstr = _t("hello,world!");

intnlen 

=cstr.getlength();

lpcstr lpszbuf 

=cstr.getbuffer(nlen);

4、cstring to lpstr

//這個和第3個技巧是一樣的,例如:

cstring cstr 

=_t(

"hello,world!");

intnlen 

=str.getlength();

lpstr lpszbuf 

=str.getbuffer(nlen);

在vc中關於型別的轉換比較麻煩,新手開發vc程式遇到的第乙個問題往往和這個有關。

近日從網上以及自己的經驗,搜尋了一些相關資料。

pcxstr,如果不是在 unicode 下,pcxstrconst char*是相同的;

cstring作為指向字元的非常數指標來直接訪問時,請使用 getbuffer 和 releasebuffer 成員函式。

使用 allocsysstring 和 setsysstring 成員函式來分配和設定用於自動化(以前稱為 ole 自動化)中的bstr物件。

乙個cstring物件可儲存多達int_max(2,147,483,647) 個字元。tchar資料型別用來獲取或設定cstring物件中的單個字元。與字元陣列不同,cstring類具有內建記憶體分配能力。

從 mfc 4.0 版本開始,當複製 cstring 物件時,mfc 增加引用計數而不是複製資料。這使得按值傳遞引數和按值返回cstring物件更為高效。這些操作將呼叫複製建構函式,有時甚至不只一次。增加引用計數會減少這些普通操作的系統開銷,並且使人更願意使用cstring

隨著每個副本的銷毀,原物件中的引用計數也會相應減少。直到原cstring物件的引用計數減少到零時才會銷毀該物件。

可使用cstring成員函式 lockbuffer 和 unlockbuffer 來禁用或啟用引用計數。

vc中字元編碼轉換

一直用php開發,在php開發用字元編碼轉換很簡單只要用iconv函式就可以實現,最近的專案要把vc的資料提交給php處理,在返回給vc結果,問題來了,vc專案的編碼是gb2312,而php程式是utf 8編碼,導致資料亂碼。看到亂碼第一感覺就是編碼問題了。vc中有像iconv這樣的函式嗎?查msd...

VC中的字串轉換巨集

atl7.0引入了幾個新的轉換類和巨集,現有的巨集提供了顯著的改善。新的字串轉換類和巨集的名稱,採取的形式如下 c sourcetype 2 c destinationtype ex 其中,c 表示目的型別是const型別的,ex 表示指定了儲存字串資料的固定靜態快取區的大小,如果字串轉換的結果超過...

VC中的字串轉換巨集

atl7.0引入了幾個新的轉換類和巨集,現有的巨集提供了顯著的改善。新的字串轉換類和巨集的名稱,採取的形式如下 c sourcetype 2 c destinationtype ex 其中,c 表示目的型別是const型別的,ex 表示指定了儲存字串資料的固定靜態快取區的大小,如果字串轉換的結果超過...