讀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...