1. 程式人生 > >怎麼獲取字串中最後一個“\”的位置? 獲取字串子串

怎麼獲取字串中最後一個“\”的位置? 獲取字串子串

得到一個字串,如:strFileFullName = "D:\code\cpp\data\frames_Src\001.jpg" 怎樣得到: strFilePath = "D:\code\cpp\data\frames_Src" strFileName = "001.jpg" 關鍵是獲取字串中最後一個“\”位置。 方法1:  int n = strFileName.ReverseFind('\\');//從後往前尋找 strFilePath = strFileName.Left(n); strFileName = strFileName.Right( strFileName.GetLength()-(n+1) ); 方法2: int p = strFileName.GetLength() - 1; while(p >=0 && (strFileName[p]!= '\\')) p--; strFilePath = strFileName.Left(p); strFileName = strFileName.Right( strFileName.GetLength()-(p+1) ); CString擷取字串的方法:
C中CString型別好像沒有像string.SubString(parame)這樣類似的函式來從字串中直接分離子串,但是我們可以藉助CString的幾個函式來實現。

在CString中有Find(),Delete(),Left(),Right(),Mid()就可以實現分離子串的目的了。

intFind( TCHAR ch ) const;

找到給定的字元返回它在字串中對應的索引號;沒有找到就返回-1。

intDelete( int nIndex, int nCount = 1);

返回值是被刪除前的字串的長度,nIndex是第一個被刪除的字元索引,nCount是一次刪除幾個字元。當nCount過大,沒有足夠的字元刪除時,此函式不執行。

CStringLeft( int nCount ) const;

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

CStringMid( int nFirst ) const;

CStringMid( int nFirst, int nCount ) const;

nCount代表要提取的字元數, nFirst代表要提取的開始索引位置

CStringRight( int nCount ) const;

返回的字串是後nCount個字元。

簡例:

CStringstr(”MyNameIsRenZheng”);

CStringstr1, str2, str3;

intx,y;

x=str.Find(_T("N"));   //2

y=str.Delete(0,5);  // 16

str1 =str.Left(3);   // MyN

str2 =str.Mid(11, 4);  //Zhen。注意,第二個引數是代表子串的長度

str3 =str.Right(3);  // eng

假使有CString str=_T("My name is Ren Zheng");

按空格提取子串可以採用如下方法:

CStringstr=_T("My name is Ren Zheng");

CArray<CString,CString>strArray;  //定義一個CString型別的動態陣列,用來存取CString型別物件。

while(str.Find(_T(" "))+1)//當找不到空格時返回-1,所以這裡我用它返回值加1來迴圈

{

strArray.Add(str.Left(str.Find(_T(“”))));//找到空格的索引,擷取空格左邊的字串,並將它新增到strArray動態陣列中。

str.Delete(0,str1. GetLength_r()+1);//返回刪除空格和其左邊的字串的得到的新字串。

}

strArray.Add(str);//最後加上經過最終刪除後剩下的字串;

這樣按空格分離出的子串就都儲存在動態CString型別的陣列物件strArray中去了,現在就可以用strArray. Get_r(i)來得到每個子串;