(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]={“feiqiang”,”mingri”,”mr”};
for(int i=0;i<5;i++)
{
array.Add(str[i]);//添加元素
}
for(int j=0;j<array.Size(),j++)
{//字元數組大小
if(array.Get(j)==”mr”)
{
MessageBox(“存在”);
}
(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;
1.CString::IsEmpty
BOOL IsEmpty( ) const;
傳回值:如果CString 對象的長度為0,則返回非零值;否則返回0。
說明:此成員函數用來測試一個CString 對象是否是空的。
樣本:
下面的例子說明了如何使用CString::IsEmpty。
// CString::IsEmpty 樣本
CString s;
ASSERT( s.IsEmpty() );
請參閱 CString::GetLength
2.CString::Left
CString Left( int nCount ) const;
throw( CMemoryException );
傳回值:返回的字串是前nCount個字元。
樣本:
CString s( _T("abcdef") );
ASSERT( s.Left(2) == _T("ab") );
3.CString::LoadString
BOOL LoadString( UINT nID );
throw( CMemoryException );
傳回值:如果載入資源成功則返回非零值;否則返回0。
nID 一個Windows 字串資源ID。
說明: 此成員函數用來讀取一個由nID 標識的Windows 字串資源,並放入一個已有CString 對象中。
樣本:
下面的例子說明了如何使用CString::LoadString。
// CString::LoadString 樣本
#define IDS_FILENOTFOUND 1
CString s;
if (! s.LoadString( IDS_FILENOTFOUND ))
4.CString::MakeLower
void MakeLower( ); //改變字元的小寫
5.CString::MakeReverse
void MakeReverse( ); //字元倒置
6.CString::MakeUpper
void MakeUpper( ); //改變字元的大寫
7.CString::Mid
CString Mid( int nFirst ) const;
CString Mid( int nFirst, int nCount ) const;
nCount代表要提取的字元數, nFirst代表要提取的開始索引位置
樣本:
CString s( _T("abcdef") );
ASSERT( s.Mid( 2, 3 ) == _T("cde") );
8.CString::ReleaseBuffer
void ReleaseBuffer( int nNewLength = -1 );
參數:nNewLength
此字串的以字元數表示的新長度,不計算結尾的Null 字元。如果這個字
符串是以Null 字元結尾的,則參數的預設值-1 將把CString 的大小設定為
字串的當前長度。
說明:
使用ReleaseBuffer 來結束對由GetBuffer 分配的緩衝區的使用。如果你知道緩
沖區中的字串是以Null 字元結尾的,則可以省略nNewLength 參數。如果字元
串不是以Null 字元結尾的,則可以使用nNewLength 指定字串的長度。在調用
ReleaseBuffer 或其它CString 操作之後,由GetBuffer 返回的地址是無效的。
樣本:
下面的例子說明了如何使用CString::ReleaseBuffer。
// CString::ReleaseBuffer 樣本
CString s;
s = "abc";
LPTSTR p = s.GetBuffer( 1024 );
strcpy(p, "abc"); //