Menu

CString用法小结_快乐年华

0 Comment

二    
CString 经用办法绍介

1.     
设定初值办法:

(1)   
连续的付印,如Cstring=”mingrisoft”;

(2)   
经过建筑的职务设定初值,如   CString str(‘
’,100/100八位字节)和散布,踏平房间

                                                       
char* p=”feiqiang”; CString(P);拟出 p.

(3)   
装货项主语达到目标字母行资源,如CString str;(IDS_STR);

(4)   
应用CString类的分子职务Format设定初值,如CString str; int i=0;
(“value:%d”,i);

2.     
将CString转变为char*,如

        
CString str=”feqiang”;

        
char *p;

        
p=();

        
delete p;

        
将char*转变为CString,如:

        
char* p=”feiqiang”;

        
p(p)] =0

        
Cstring STR(P)

        
char* 掉换和角色大厦:

        
char 又[ 5 ] ={‘a’,’b’,’c’};

        
char *p;

        
p=new 角色[ 5 ]

        
p=buf;

        
将字母行掉换为数字:

        
CString str=”12”;

        
int i=atoi(str);

        
long j=atoll(str);

        
float f=atof(str);

        
将数字掉换为字母行:

        
CString str;

        
int i=12;

        
(“%d”,i);

        
long j=12;

        
str,Format(“%ld”,j);

        
支持物典型的移情。

3.     
应用字母行互相牵连容易搬运的办法:

        
(1)   
皱缩字母行达到目标国文,如

        
CString strtext,temp,strres;

        
GetLlgItem(IDC_TEXT)->GetWindowText(strtext);//经过ID获取校订框达到目标原文

        
为(int =/0;i<();i++){

                  
char ch=(i);

                  
即使(IsDBCSLeadByte(CH) 决定角色条件是双八位字节密码的宁愿任一某一八位字节。

                           
tmp=(i,2);/ / 1到幂数的标准阻碍
)

                           
i++;

                           
stress+=tmp;

}

GetLlgItem(IDC_RESULT)->SetWindowText(strtes);//设置原文框达到目标原文

}

        
(2)   
英文字母行最初的大写,如 将以间隔标志师的英文单词的宁愿任一某一字母大写(小写字母)

        
(我);/ /皱缩字母行介绍人我信

        
掉换为小写字母

        
掉换为大写

        
(2)   
理智标志切割的开展:

        
int
pos=(strchar);//查找角色,即使未检出的,后来地前往0,查找角色的得第二的名。,限制因素可以是角色也可以是字母行。

        
while(pos>0){

                  
str1 =(POS);/ /左,限制因素是字母行的字母行数。

                  
str=();//取右,同样的人的限制因素

                  
(“%s/r/n”,str1);/ / /返回换行的R / N串

                  
strres+=tmp;

                  
pos=(strchar);

}

(3)   
拟出称呼委任的国文:

(strtxt);

(我开端,Iend);//在原文框达到目标意味着原文,并获取原文的头介绍人和后体介绍人。

if(我开端==iend){

        
return;

}

str1=(我开端);

if(iend>=()){

        
str2=””;

}else{

        
str2=(()-iend);

}

strres+=str1;

strres+=str2;

        
(4)   
掉换字母行:

        
(strchar,strnew);//替换旧的与新的字母行

        
(5)   
理智CPoint搜索得第二的名:

        
CPoint 获取鼠标定位的字母行得第二的名。

        
int POS =(PT);/ PT理智字母行达到目标得第二的名,要人得第二的名的在左边

((if)){以决定字母行条件为空。

                  
(strres);//将字母行原文框

}

        
角色大写:ch=ch-32;

        
(6)   
字母行疏忽探察对比地:

        
CString str=”feiqiang”;

        
int com =(明日);//即使前往0,不然前往1;

        
(7)   
衔接符:CString str=”feiqiang/

t”;

        
(8)   
倾向下旋:();

        
(9)   
拆开宁愿房间:(); ();

                 
停止停止字母行达到目标迷住空格,(“ ”,””);

        
(10)  查找字母行列表

int
index=::SendMessage((),LB_FINDSTRINGEXACT,-1,
(LPARAM)(LPCTSTR)strtext));//经过SendMessage职务向列表支配权发送LB_FINDSTRINGEXACT音讯来查找称呼委任字母行条件在列表房间中,即使在,则前往介绍人得第二的名。。

        
(11)   字母行大厦:

                  
CString STR(5) array;

                  
CString STR(5)={“feiqiang”,”mingri”,”mr”};

                  
为(int i=0;i<5;i++){

                           
(STR [我]);//添加元素

}

为(int j=0;j<(),j++){//角色大厦大部分

        
即使((=)=神学家

        
MessageBox(“在”);

}

}

(12) 
设置编码方法:Project/SettingsàPreprocessor,即使你想应用DBCS,添加_mbcs(多八位字节编码),即使你想应用Unicode,添加_unicode,应用ASCII。无添加

二    
字母行手指典型

(1)   
点一任一某一:32位定态字母行手指,可连续的应用,如点一任一某一 str=”mingrisofg”;

(2)   
一任一某一32位的字母行的手指:,如一任一某一 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=NULL;

bstr=SysAllocString(L”feiqang”);//从LPCWSTR建筑的

        
SysFreeString(bstr);//使摆脱

将BSTR魄力转变为CString,如:

CString str=(CString) bstr;或CString str; BSTR
bstr=();

2.     
bstr_(包装为BSTR),包含的头纸是:””

        
用法:

        
连续的分派:_bstr_t tbstr=”feqiang”;

        
给CString瞄准评价:CString str=(LPCSTR)tbstr;//LPCSTR str=tbstr;

        
使意见分歧_bsr_成BSTR,应用付印效能:BSTR bstr=();
SysFreeString(bstr);

        
对_bstr_瞄准评价暗中BSTR,如BSTR bstr=SysAllocString(L”mingri”); _bstr_t
tbstr=bstr;

四 体式典型

如:获取体系时期和体式

        
CTime t=CTime::GetCurrentTime();

        
CSTring strtime=(“%H:%M:%S”);

        
MessageBox(strtime;

1.CString::IsEmpty

BOOL IsEmpty( )
const;

前往值:即使CString
长是0。,后来地前往非零值。;否后来地前往0。

阐明:此分子职务用来测量法一任一某一CString
瞄准条件为空。

示例:

上面的诉讼阐明了若何应用CString::IsEmpty。

// CString::IsEmpty
示例

CString s;

ASSERT( ()
);

请参阅
CString::GetLength

2.CString::Left

CString Left( int nCount )
const; 

throw( CMemoryException
);

前往值:前往的字母行是前者nCount角色。

示例:

CString s( _T(“abcdef”)
);

ASSERT( (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 (! (
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代表的角色数皱缩, 率先代表开端幂数的要皱缩的得第二的名

示例:
CString s( _T(“abcdef”) );
ASSERT( ( 2, 3 ) == T(CDE) );

8.CString::ReleaseBuffer

void ReleaseBuffer( int
nNewLength = -1 );

限制因素:nNewLength

字母行角色的新长,不计算终的空角色。即使忽略是忽略

字母行以空角色完毕。,限制因素的Windows 默认值- 1 将把CString
的大部分设置为

一任一某一字母行的电流长。

阐明:

应用ReleaseBuffer 在GetBuffer完毕
缓冲应用的分派。即使你认识它很慢

冲区达到目标字字母行以空角色完毕。,你可以省略nnewlength
限制因素。即使角色

字母行不见得以空角色完毕。,你可以应用nnewlength
称呼委任字母行的长。。在命令

ReleaseBuffer 或其它CString
容易搬运然后,由GetBuffer 前往的地址病人。。

示例:

上面的诉讼阐明了若何应用CString::ReleaseBuffer。

// CString::ReleaseBuffer
示例

CString s;

s = “abc”;

LPTSTR p = ( 1024
);

strcpy(p, ABC) //
连续的应用缓冲

ASSERT( () == 3 );
// 字母行长 = 3

(); //
富余的内存使摆脱,现时,P 病人。

ASSERT( () == 3 );
// 长依然是3。

9.CString::Remove

int CString::Remove ( TCHAR ch
);

前往值:前往从字母行中移除的角色数。。即使字母行不时尚,则前往零。。

限制因素:CH
要从字母行中移除的角色。。

叙述:此分子职务用于开始CH。
从字母行中移除一任一某一示例。。与如此角色的对比地是一任一某一诉讼。

的。

示例:

// 将小写字母letter'c'from句子

CString str (“This is a
测量法。

int n = ( ”t”
);

ASSERT( n == 2 );

ASSERT( str ==“This is a 锿. ”
);

 10.CString::Replace

int Replace( TCHAR 儿, TCHAR
chNew );

int Replace( LPCTSTR lpszOld,
LPCTSTR lpszNew );

前往值:前往要替换角色数。。即使忽略是忽略符串不注意到时尚则前往零。

限制因素:儿    
是chnew 替换角色。

chNew   
要用来掉换儿 的角色。

lpszOld  
点字母行的手指,此字母行包含lpszNew 替换角色。

LpszNew 
点字母行的手指,此字母行包含要用于掉换lpszOld 的角色。

阐明:此分子职务用一任一某一角色掉换一任一某一角色。。职务的宁愿任一某一雏形在字母行中用chNew

现场掉换儿。该职务的第二的个原始lpszNew
称呼委任字母行掉换lpszOld 称呼委任

的子串。

在掉换然后,字母行可能性补充物或增加。;这是因lpszNew
和lpszOld 的长

它不喜欢是相等的数量的。表格的两版本是不区别大部分写字母婚配。

示例:

// 宁愿任一某一诉讼,old 和新
长同样的人的。

CString strZap( “C – -”
);

int n = (”-”, ”+”
);

ASSERT( n == 2 );

ASSERT(strZap == “C++”
);

// 第二的例,old 和新
意见分歧长的。

CString strBang( “Everybody
likes ice hockey” );

n = ( “hockey”,
“golf” );

ASSERT( n ==1 );

n = ( “likes” ,
“plays” );

ASSERT( n == 1 );

n = ( “ice”,
NULL );

ASSERT( n == 1 );

ASSERT( strBang == “Everybody
plays golg” );

//
注意到,现时你的句子里有一任一某一额定的空格。

//
拟出富余的房间,可以将它包含在要被替换字母行中,诸如,“ice ”。

11.CString::ReverseFind

int ReverseFind( TCHAR ch )
const;

前往值: 前往此CString
在瞄准与断言的角色婚配的期末考试一任一某一角色的介绍人;即使不注意到搜索

理智角色前往的需求- 1。

限制因素: ch 
搜索角色。

阐明:此分子职务在此CString
在瞄准搜索与一任一某一子串婚配的期末考试一任一某一角色。如此职务

相似地运转时效能strrchr。

示例:

// CString::ReverseFind
示例

CString s( “abcabc”
);

ASSERT( ( ”b” ) ==
4 );

12.CString::Right

CString Right( int nCount )
const; 

throw( CMemoryException
);

前往值:
前往的字母行是期末考试nCount角色。

CString s( _T(“abcdef”)
);

ASSERT( (2) == T(EF)
);

13.CString:: SetAt

void SetAt( int nIndex, TCHAR
ch );

 阐明:可以把字母行默认为一任一某一大厦,设置相似地称呼委任类别。,即使不宜,将会有一任一某一调试不舒服。。
Ch 替补角色, 在称呼委任得第二的名的角色 成了英雄ch

 示例:

CString s( “abc” );

();

ASSERT( s == “cba”
);

14.CString::TrimLeft

void TrimLeft( );

void CString::TrimLeft( TCHAR
chTarget );

阐明:即使不注意到限制因素,从左(空格)拟出角色。,相遇非这样的的要人。
自然,你也可以称呼委任要拟出的角色。 即使称呼委任的限制因素是字母行,因而当内幕一任一某一角色被拟出时。
/n  换行符
/t  TAB角色

示例1:
CString str = “/n/t a”;

();

STR是A

 示例2:

CString str = “abbcadbabcadb
“;

(ab)

卒”cadbabcadb “

(AC)

对bcadbabcadb卒 “

15.CString::TrimRight

void TrimRight( );

void CString::TrimRight( TCHAR
chTarget );

void CString::TrimRight(
LPCTSTR lpszTargets );

阐明:用法与是你这么说的嘛!同样的。。

16.CString::Compare

int Compare( LPCTSTR lpsz )
const;

前往值:前往的字母行0,以内lpsz
前往到1,超越lpsz 前往1, 意见分歧大部分的角色

示例:

CString s1( “abc” );

CString s2( “abd” );

ASSERT( ( s2 ) == -1
);

ASSERT( ( “abe” ) ==
-1 

17.CString::CompareNoCase

int CompareNoCase( LPCTSTR lpsz
) const;

前往值: 字母行同样的
前往0,以内lpsz 前往到1,超越lpsz
前往1,不意见分歧大部分的角色

18.CString::Collate

int Collate( LPCTSTR lpsz )
const;

同CString::Compare

19.CString::CollateNoCase

int CollateNocase( LPCTSTR lpsz
) const;

同CString::CompareNoCase

20.CString::CString     
//建筑的职务

CString( );

CString( const
CString& stringSrc ); 

CString( TCHAR ch, int nRepeat
= 1 ); 

CString( LPCTSTR lpch, int
nLength );

CString( const unsigned char*
psz ); 

CString( LPCWSTR lpsz
);

CString( LPCSTR lpsz
);

示例:

CString
s1;                     

CString s2( “cat”
);              

CString s3 =
s2;                 

CString s4( s2 + ” ” + s3
);        

CString s5( ”x”
);                     
// s5 = “x”

CString s6( ”x”, 6
);                  
// s6 = “xxxxxx”

CString
s7((LPCSTR)ID_FILE_NEW);       
// s7 = “Create a new document”

CString city =
“Philadelphia”;

21.CString::Delete

int Delete( int nIndex, int
nCount = 1); 

前往值:在被拟出优于的字母行的长

称呼委任要拟出的宁愿任一某一角色,一时期nCount拟出少量的角色。理智我试验的卒:当nCount >拟出字母行的最大长(getCount
– nIndex)会出错,当nCount太大,不注意到十足的角色被拟出。,如此职务不家具。

示例:

CString
str1,str2,str3;

char a;

str1 = “nihao”;

str2 = “nIhao”;

int x;

// int i=(str1 ==
str2);      

(2,3);

即使nCount(3) >
GetCount() – nIndex (5-2)将家具不舒服

22.CString::Empty

Void Empty( );

前往值:不注意到前往值 
空容易搬运

示例:

CString s( “abc” );

();

ASSERT( ( ) == 0
);

23.CString::Find

int Find( TCHAR ch )
const;

int Find( LPCTSTR lpszSub )
const;

int Find( TCHAR ch, int nStart
) const;

int Find( LPCTSTR lpszSub, int
nStart ) const;

前往值:  前往到不婚配
-1;  幂数的为0 开端; nStar 经过标准值启动代表 要人开端搜索
,

它是一任一某一字母行,包含一任一某一幂数的的启动特点。

示例:

CString s( “abcdef”
);

ASSERT( ( ”c” ) == 2
);

ASSERT( ( “de” ) == 3
);

Cstring str(“The stars are
aligned”);

Ing n =
(”e”,5);

断言(n == 12)

24.CString::FindOneOf

int Find经过 LPCTSTR
lpszCharSet ) const;

前往值:  前往到不婚配
-1;  幂数的为0 开端

注意到::前往此字母行中宁愿任一某一在lpszCharSet中也包含角色而且从零开端的介绍人值

示例:

CString s( “abcdef”
);

ASSERT( 经过 “xd” ) ==
3 ); // ”d” is first 竞赛。

25.CString::Format

void Format( LPCTSTR
lpszFormat, … );

void Format( UINT nFormatID,
… );

限制因素:lpszFormat 
体式把持字母行

nFormatID 
字母行检验人

示例:

CString str;

(“%d”,13); 

此刻Str是13岁。

26.CString::GetAt

TCHAR GetAt( int nIndex )
const;

前往值:前往标志为称呼委任的角色,可以将字母行默认为大厦。,抓住相似地称呼委任类别。,即使不宜,将会有一任一某一调试不舒服。。

27.CString::GetBuffer

LPTSTR GetBuffer( int
nMinBufLength );

前往值:一任一某一角色缓冲,点一任一某一瞄准(期末考试一任一某一空的CH LPTSTR
手指。

限制因素:nMinBufLength

由角色达到目标角色数表现的最小心甘情愿的。。此值不包含完毕空角色的空格。。

阐明:此分子职务前往一任一某一点CString
瞄准使满足角色缓冲的手指。。前往的LPTSTR 非const,相应地可以容许连续的修正CString
的使满足。即使你应用GetBuffer 前往一任一某一手指来更改字母行的使满足。,你必不可少的事物在应用其它的CString
在分子职务的命令ReleaseBuffer 职务。

在命令ReleaseBuffer 然后,由GetBuffer
前往地址可能性病人,因其它的CString 容易搬运可能性会事业CString 重行分派缓冲。。即使你不注意到时尚此CString
的长,缓冲不见得被重行分派。当此CString 当瞄准被销毁时,它的缓冲内存将主动使摆脱。。

注意到:即使你自己认识字母行的长,You should not add the end of the empty character。又,当你应用releasebuffer
使摆脱缓冲,必不可少的事物称呼委任期末考试一任一某一字母行长。。即使添加空角色的终,你被期望给ReleaseBuffer 传送长限制因素1
,ReleaseBuffer strlen是对缓冲停止 判定其长。

示例:

// CString::GetBuffer
诉讼

CString s( “abcd” );

#ifdef _DEBUG

afxDump
<< "CString s " << s << "/n";

#endif

LPTSTR p = ( 10
);

strcpy( p, “Hello” ); //
连续的号召CString 瞄准。

( );

#ifdef _DEBUG

afxDump
<< "CString s " << s << "/n";

#endif

28.CString::GetLength

int GetLength( )
const;

前往值:在前往的字母行的八位字节数。

阐明:此分子职务用来获取如此CString
在瞄准的八位字节计数。此计数不包含空角色的完毕。。

为了一任一某一多八位字节角色集(MBCS),GetLength 理智每8
位的角色数;即,在一任一某一多八位字节角色和八位字节开端被认为两。

示例

上面的诉讼阐明了若何应用CString::GetLength。

// CString::GetLength
示例

CString s( “abcdef”
);

ASSERT( () == 6
);

29.CString::Insert

int Insert( int nIndex, TCHAR
ch ); 

int Insert( int nIndex, LPCTSTR
pstr );

前往值:前往改变的长,nIndex是拔出数例后的角色(或字母行)是

示例:

CString str(
“HockeyBest”);

 int n =
( 6, “is” );

 ASSERT( n ==
( ) ); 

printf( “1: %s/n”, ( LPCTSTR )
str );

 n =
( 6, ” ” ); 

ASSERT( n == ( )
); 

printf ( “2: %s/n”, (LPCTSTR)
STR );

 n =
(555, ‘1’);

ASSERT( n == ( )
);

 printf ( “3:
%s/n”, ( LPCTSTR ) str );

输入

1. Hockeyis Best

2. Hockey is Best

3. Hockey is Best!

装货中,请等一会儿。

发表评论

电子邮件地址不会被公开。 必填项已用*标注