VC++字符串截取總結

VC字符串截取首先看是char還是CString


CString比較好弄,有現成的方法


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 代表以索引值nStart 的字符開始搜索 ,

即爲包含以索引nStart字符後的字符串

例子

Cpp代碼
CString s( "abcdef" ); 
ASSERT( s.Find( 'c' ) == 2 ); 
ASSERT( s.Find( "de" ) == 3 ); 
Cstring str(“The stars are aligned”); 
Ing n = str.Find('e',5); 
ASSERT(n == 12) 
CString s( "abcdef" ); ASSERT( s.Find( 'c' ) == 2 ); ASSERT( s.Find( "de" ) == 3 ); Cstring str(“The stars are aligned”); Ing n = str.Find('e',5); ASSERT(n == 12)

CString::Left

CString Left( int nCount ) const;
throw( CMemoryException );

返回的字符串是前nCount個字符。

例子

Cpp代碼
CString s( _T("abcdef") ); 
ASSERT( s.Left(2) == _T("ab") ); 
CString s( _T("abcdef") ); ASSERT( s.Left(2) == _T("ab") );


CString::Mid
CString Mid( int nFirst ) const;
CString Mid( int nFirst, int nCount ) const;
nCount代表要提取的字符數, nFirst代表要提取的開始索引位置

例子

Cpp代碼
CString s( _T("abcdef") ); 
ASSERT( s.Mid( 2, 3 ) == _T("cde") );

CString::Right

CString Right( int nCount ) const;

throw( CMemoryException );

返回的字符串是最後nCount個字符。

Cpp代碼
CString s( _T("abcdef") ); 
ASSERT( s.Right(2) == _T("ef") );


如果是char*字符串,會有些麻煩


首先是C的例子

** substring.C -- 截取字符串 */
#include "stdio.h"
#include "conio.h"
char *left(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len) n=len;
while(n--) *(q++)=*(p++);
*(q++)='\0';
return dst;
}
char *right(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len) n=len;
p+=(len-n);
while(*(q++)=*(p++));
return dst;
}
char *mid(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len) n=len-m;
if(m>0) return NULL;
p += m;
while(n--) *(q++) = *(p++);
*(q++)='\0';
return dst;
}
char *substring(char *dst,char *src,int len,int start)
{
char *p=dst;
char *q=src;
int length=strlen(src);
if(start>=length||start<0) return NULL;
if(len>length) len=length-start;
q+=start;
while(len--)
{
*(p++)=*(q++);
}
*(p++)='\0';
return dst;
}
main()
{
char *src="411524198510088017";
char *year,*month,*day;
int i;
substring(year,src,4,6);
for(i=0;i<strlen(year);i++)
{
printf("%c",*(year+i));
}
getch();
}


充分理解了C的方法,我們再看C++用函數的方法

void main()
{
char*s ="abcdefg" ;
char s1[3]={'\0'};

strncpy(s1,s+strlen(s)-2,2);
cout<<s1<<endl;
}


就不難理解了。


或者我想可以轉CString然後截取 曲線救國。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章