一 Cstring
1. 初始化方法: (1) 直接復制,如Cstring=”mingrisoft”; (2) 通過構造函數(shù)初始化,,如 CString str(‘ ’,100)//與分配100個字節(jié),,填充空格 char* p=”feiqiang”; Cstring(p);delete p. (3) 加載工程中的字符串資源,,如CString str;str.LoadString(IDS_STR); (4) 使用CString類的成員函數(shù)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數(shù)組的轉化: char buf[5] ={‘a’,’b’,’c’}; char *p; p=new char[5]; p=buf; 將字符串轉化為數(shù)字: CString str=”12”; int i=atoi(str); long j=atoll(str); float f=atof(str); 將數(shù)字轉化為字符串: CString str; int i=12; str.Format(“%d”,i); long j=12; str,Format(“%ld”,j); 同理其他類型,。 3. 字符串的相關操作即方法的使用: (1) 提取字符串中的中文,,如 CString strtext,temp,strres; GetLlgItem(IDC_TEXT)->GetWindowText(strtext);//通過ID獲取編輯框中的文本 for(int =\0;i<strtext.GetLength();i++){ char ch=strtext.GetAt(i); if(IsDBCSLeadByte(ch)){ //判斷字符是否是雙字節(jié)編碼的前一個字節(jié) tmp=strtext.Mid(i,2);//截取索引index1到index2的字符[ ) i++; stress+=tmp; } GetLlgItem(IDC_RESULT)->SetWindowText(strtes);//設置文本框中的文本 } (2) 英文字符串首字母大寫,如 將以空格符分隔的英文單詞的第一個字母大寫(小寫) str.GetAt(i);//提取字符串索引為i個字母 str.MakeLower();//轉化為小寫 tmp.MakeUpper();//轉化為大寫 (2) 按制定符號分割字符: int pos=str.Find(strchar);//查找字符,,如果沒找到,,則返回0,找到則返回字符的位置,參數(shù)可以是字符也可以是字符串 while(pos>0){ str1=str.Left(pos);//取左,參數(shù)為字符串的個數(shù) str=str.Right(str.GetLength-pos-1);//取右,,參數(shù)同上 tmp.Format(“%s\r\n”,str1);//字符串中\(zhòng)r\n代表回車化行符 strres+=tmp; pos=str.Find(strchar); } (3) 刪除指定的中文: m_text.GetWindowText(strtxt); m_text.GetSel(istart,iend);//得到文本框中選中的文本,,并且得到文本的頭索引和尾索引 if(istart==iend){ return; } str1=strtxt.Left(istart); if(iend>=strtxt.GetLength()){ str2=””; }else{ str2=strtxt.Right(strtxt.GetLength()-iend); } strres+=str1; strres+=str2; (4) 替換字符串: strtxt.Replace(strchar,strnew);//用新串替換舊串 (5) 根據(jù)CPoint查找位置: CPoint pt;//獲取字符串時獲取鼠標所在字符串的位置 int pos=m_text.CharFromPos(pt);//根據(jù)pt獲取字符串中的位置,即其左側字符的位置 if(str.IsEmpty()){//判斷字符串是否為空 m_num.AddString(strres);//文本框追加字符串 } 將字符轉化為大寫: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函數(shù)向列表控件發(fā)送LB_FINDSTRINGEXACT消息來查找指定字符串是否在列表空間中,,如果存在則返回索引位置,。 (11) 字符串數(shù)組: CString str[5] array; CString str[5]={“feiqiang”,”mingri”,”mr”}; for(int i=0;i<5;i++){ array.Add(str[i]);//添加元素 } for(int j=0;j<array.Size(),j++){//字符數(shù)組大小 if(array.Get(j)==”mr”){ MessageBox(“存在”); } } (12) 設置編碼方式:Project/SettingsàPreprocessor,如果要使用DBCS,,則添加_MBCS(多個字節(jié)編碼),,如果要使用Unicode,則添加_Unicode,不添加則使用ASCII. 二 字符串指針類型 (1) LPCSTR:32位靜態(tài)字符串指針,,可以直接賦值使用,,如LPCSTR str=”mingrisofg”; (2) LPSTR:32位字符串指針,如LPSTR str; str=new char[256]; (3) LPCTSTR:32位UNICODE型靜態(tài)字符串指針,,如 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函數(shù):BSTR bstr=tbstr.copy(); SysFreeString(bstr); BSTR之間賦值給_bstr_對象,如BSTR bstr=SysAllocString(L”mingri”); _bstr_t tbstr=bstr; 四 格式化類型 如:獲取并且格式化系統(tǒng)時間 CTime t=CTime::GetCurrentTime(); CSTring strtime=t.Format(“%H:%M:%S”); MessageBox(strtime; |
|