Cstring的使用,從論壇轉的

2021-08-31 15:28:24 字數 3929 閱讀 7791

讀visual c++ 開發經驗技巧寶典第二章—

-資料型別

一cstring

1.      初始化方法:

(1)    直接複製,如cstring=」mingrisoft」;

(2)    通過建構函式初始化,如

cstring str(『 』,100)//與分配100個位元組,填充空格

char* p=」feiqiang」; cstring(p);delete p.

(3)    載入工程中的字串資源,如cstring str;str.loadstring(ids_str);

(4)    使用cstring類的成員函式format初始化,如cstring str; int i=0; str.format(「value:%d」,i);

2.      將cstring轉化為char*,如

cstring str=」feqiang」;

char *p;

p=str.getbuffer();

delete p;

將char*轉化為cstring,如:

char* p=」feiqiang」;

p[len(p)]=』\0』;

cstring str(p);

char* 和char陣列的轉化:

char buf[5] =;

char *p;

p=new char[5];

p=buf;

將字串轉化為數字:

cstring str=」12」;

int i=atoi(str);

long j=atoll(str);

float f=atof(str);

將數字轉化為字串:

cstring str;

int i=12;

str.format(「%d」,i);

long j=12;

str,format(「%ld」,j);

同理其他型別。

(1)    提取字串中的中文,如

cstring strtext,temp,strres;

getllgitem(idc_text)->getwindowtext(strtext)

;//通過id獲取編輯框中的文字

for(int =\0;i

char ch=strtext.getat(i);

if(isdbcsleadbyte(ch))

getllgitem(idc_result)->setwindowtext(strtes)

;//設定文字框中的文字}

(2)    英文本串首字母大寫,如 將以空格符分隔的英文單詞的第乙個字母大寫(小寫)

str.getat(i)

;//提取字串索引為i個字母

str.makelower();//轉化為小寫

tmp.makeupper();//轉化為大寫

(2)    按制定符號分割字元:

int pos=str.find(strchar);//

查詢字元,如果沒找到,則返回0,找到則返回字元的位置,引數可以是字元也可以是字串

while(pos>0)

(3)    刪除指定的中文:

m_text.getwindowtext(strtxt);

m_text.getsel(istart,iend);//得到文字框中選中的文字,並且得到文字的頭索引和尾索引

if(istart==iend)

str1=strtxt.left(istart);

if(iend>=strtxt.getlength())else

strres+=str1;

strres+=str2;

(4)    替換字串:

strtxt.replace(strchar,strnew);//用新串替換舊串

(5)    根據cpoint查詢位置:

cpoint pt;//

獲取字串時獲取滑鼠所在字串的位置

int pos=m_text.charfrompos(pt);//根據pt獲取字串中的位置,即其左側字元的位置

if(str.isempty())

將字元轉化為大寫:ch=ch-32;

(6)    字串忽略大小寫的比較:

cstring str=」feiqiang」;

int com=str.comparenocase(「mingri」)

;//如果相等返回0,否則返回-1;

(7)    連線換行符:cstring str=」feiqiang\

t」;(8)    字元反**str.makereverse();

(9)    取出首位空格:str.trimleft()

; str.trimright();

取出字串中的所有空格,str.replace(「 」,」」);

(10)  在listbox

中查詢字串

int index=::sendmessage(m_stringlist.getsafehwnd(),lb_findstringexact,-1,

(lparam)(lpctstr)strtext));/

/通過sendmessage

函式向列表控制項傳送lb_findstringexact

訊息來查詢指定字串是否在列表空間中,如果存在則返回索引位置。

(11)   

字串陣列:

cstring str[5] array;

cstring str[5]=;

for(int i=0;i<5;i++)

for(int j=0;j(12)  設定編碼方式:project/settings

àpreprocessor,如果要使用dbcs,則新增_mbcs(多個位元組編碼),如果要使用unicode,則新增_unicode,不新增則使用ascii.

二字串指標型別

(1)    lpcstr:32位靜態字串指標,可以直接賦值使用,如lpcstr str=」mingrisofg」;

(2)    lpstr:32位字串指標,如lpstr str; str=new char[256];

(3)    lpctstr:32位unicode型靜態字串指標,如lpctstr str=_t(「mingrisoft」);

(4)    lptstr: 32位unicode型字串指標,如lptstr str=new tchar[256];

三bstr(進行com程式設計時使用的字串型別)與cstring之間的轉化:

1.      對bstr變數賦值時:

bstr bstr=null;

bstr=sysallocstring(l」feiqang」);//從lpcwstr構造

sysfreestring(bstr);//釋放

將bstr強制轉化為cstring,如:

cstring str=(cstring) bstr;或cstring str; bstr bstr=str.allocsysstring();

2.      _bstr_(對bstr的包裝類),包含的標頭檔案為:」comdef.h」

用法:直接賦值:_bstr_t tbstr=」feqiang」;

給cstring物件賦值:cstring str=(lpcstr)tbstr;//lpcstr str=tbstr;

將_bsr_轉化為bstr,使用copy函式:bstr bstr=tbstr.copy(); sysfreestring(bstr);

bstr之間賦值給_bstr_物件,如bstr bstr=sysallocstring(l」mingri」); _bstr_t tbstr=bstr;

四 格式化型別

如:獲取並且格式化系統時間

ctime t=ctime::getcurrenttime();

cstring strtime=t.format(「%h:%m:%s」);

messagebox(strtime;

Cstring與double char 的轉換

如何進行cstring變數和int變數的轉換 編號 qa003587 建立日期 2000年11月26日 最後修改日期 2003年12月28日 所屬類別 c c 其他方面 作業系統 win98 程式設計工具 vc 問題 請問如何將cstring變數轉換為int變數,如何將int變數轉換cstring為...

C string轉int的方法

一 點睛 需要用到下面這一組函式。long int strtol const char nptr,char endptr,int base 將引數nptr字串根據引數base來轉換成有符號的整型 long long int strtoll const char nptr,char endptr,in...

Cstring 轉 char 的正確做法

在網上找了很多資料,試了很多辦法,在面對有中文字元的cstring時,都無能無力,在這裡就不貼那些錯誤做法了,擾亂視聽 正確的方法 cstring str dworddwnum widechartomultibyte cp oemcp,null,str,1,null,null,0,null char...