程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> find

find

編輯:關於C語言
 

string 類提供字符串處理函數,利用這些函數,程序員可以在字符串內查找字符,
提取連續字符序列(稱為子串),以及在字符串中刪除和添加。我們將介紹一些主要函數。

1.函數find_first_of()和 find_last_of() 執行簡單的模式匹配,如在字符串中查找單個字符c。
函數find_first_of() 查找在字符串中第1個出現的字符c,而函數find_last_of()查找最後
一個出現的c。匹配的位置是返回值。如果沒有匹配發生,則函數返回-1.

int find_first_of(char c, int start = 0):
查找字符串中第1個出現的c,由位置start開始。
如果有匹配,則返回匹配位置;否則,返回-1.默認情況下,start為0,函數搜索
整個字符串。

int find_last_of(char c):
查找字符串中最後一個出現的c。有匹配,則返回匹配位置;否則返回-1.
該搜索在字符末尾查找匹配,所以沒有提供起始位置。

示例:
string str = "Mississippi";
int index;
// 's ' 在index 為 2、3、5、6處出現
index = str.find_first_of('s',0); // index為 2
index = str.find_first_of('s',4); // index為 5
index = str.find_first_of('s',7); // index為 -1

// ‘s’的最後出現在 index= 6
index = str.find_last_of('s');
// while 循環輸出每個'i'的index
while((index = str.find_first_of('i', index))!= -1)
{
cout << "index" << index << " ";
index++; // restart search at next indx
}

輸出結果: index 1 index 4 index 7 index 10

2.字符串中提取連續字符序列,既子串。
這個操作假定位置 start 和 字符數 count.

string substr(int start=0,int count= -1);
從起始位置開始復制字符串中的count 個字符,並返回這些字符作為子串。
如果字符串尾部小於count字符或者count 為-1,則字符串尾停止復制。
如果不使用參數調用只包括位置start,則substr()返回從位置開始到字符串尾部的子串。

find()函數在字符串中查找指定模式。該函數將字符串s和位置start作為參數,並查找
s的匹配作為子串。

int find(const string& s,int start = 0):
該搜索獲得字符串s和位置start,並查找s的匹配作為子串。
如果有匹配,則返回匹配的位置;否則返回-1。默認情況下,
start為0,函數搜索整個字符串。

示例

string fullname = "Mark Tompkin", firstname, lastname;
int index;

index = str.find_last_of(' '); // index is 4
// firstname = "Mark" lastname = "Tompkin"
firstname = fullname.sub string(0,index);
lastname = fullname.substring(index+1);

index = fullname.find("kin"); // 在 index = 9 匹配 "Kin"
index = fullname.find("omp",0); // 在 index = 6 匹配 "omp"
index = fullname.find("omp",7); // index is -1 (無匹配)

3.添加和刪除字符串

字符連接(+、+=)是在字符串尾添加字符串。insert()函數擴展了這個能力,
允許在任意位置添加字符串。為了從字符串。為了從字符串中刪除字符串,
函數erase()可以從指定的位置開始刪除字符。

void insert(int statr,const string& s):
將子串s放入字符串中,起始於位置start。插入操作增加了原始字符串的長度。

void erase(int start=0,int count=-1):
從start開始,從字符串中刪除count個字符。如果現有的字符串少於count個
字符,或者count為-1,則刪除到字符串尾部的所有字符。默認情況下,start為0,函數
從字符串是起始位置開始刪除字符串。默認情況下,函數也刪除到字符串尾。
需要注意的是,不使用參數調用erase()函數時,將把字符串截斷為長度為0的空字符串。

示例:
string str = "endfile";
string s = "string object type";
str += " mark";
str.inset(3, "-of-"); // str 是 "end-of-file mark"
s.erase(7,7); // s 是 "string type"
// 從index 為3處刪除4個字符
s.erase(3,4);
cout << s; // 輸出:"strtype"

4.c_str()返回c語言風格字符串的地址。
將字符串對象轉換為c語言風格字符串。
char *c_str();
返回一個等價於字符串對象的c語言風格字符串的地址。返回類型char*表示c
語言風格字符串第1個字符的地址。

示例:
string filename = "input.dat";
// open 要求文件名是c語言風格的字符串
fin.open(filename.c_str());

5.分離字符串路徑的方法

處理文件的程序可能要分析文件名。這種算法要進行字符串處理。文件可以  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved