C++ string類中的字符串查找
類string提供了大量查找功能和搜索功能,其中比較經常使用的查找和搜索函數是find()函數、
find_first_not_of()函數、find_first_of()函數、find_last_not_of()函數、find_last_of()函數、rfind()等。
find()函數的語法以下所示:
(1) size_type find(E c, size_type pos = npos) const;用來查找單個字符在字符串中出現的位置並返回
該位置基於0的索引值。
(2) size_type find(const E *s, size_type pos = npos) const;用來查找以空字符結尾的字符數組在
字符串中出現的位置並返回該位置基於0索引值。
(3) size_type find(const E *s, size_type pos, size_type n = npos) const;用來查找以空字符結尾的
字符數組在字符串中出現的位置並返回該位置基於0索引值,它是從npos開始查找的。
(4) size_type find(const basic_string &str, size_type pos = npos) const;用來查找字符串而且返回
該搜索的字符串的基於0索引值的位置值,它是從npos開始查找的。
find()函數的功能是從std::string對象的頭部順序找目標值,若是找到返回該目標值出現的位置,若是沒有在
字符串對象中找到目標對象,返回值爲-1。
rfind()函數的語法以下所示:
(1) size_type rfind(E c, size_type pos = npos) const;用來反向查找單個字符在字符串中出現的位置
並返回該位置基於0的索引值。
(2) size_type rfind(const E *s, size_type pos = npos) const;用來反向查找以空字符結尾的字符數組
在字符串中出現的位置並返回該位置基於0索引值。
(3) size_type rfind(const E *s, size_type pos, size_type n = npos) const;用來反向查找以空字符
結尾的字符數組在字符串中出現的位置並返回該位置基於0索引值,它是從npos開始查找的。
(4) size_type rfind(const basic_string &str, size_type pos = npos) const;用來反向查找字符串而且
返回出現該搜索的字符串的基於0索引值的位置值,它是從npos開始查找的。
rfind()函數的功能是從std::sring對象的尾部反向查找目標值,若是找到返回該目標值出現的位置,若是沒有
在字符串對象中找到目標對象,返回值爲-1。
find_first_not_of()函數的常見語法以下所示:
size_type find_first_not_of(E c, size_type pos = 0) const;
size_type find_first_not_of(const E *s, size_type pos = 0) const;
size_type find_first_not_of(const E *s, size_type pos, size_type n) const;
size_type find_first_not_of(const basic_string &str, size_type pos = 0) const;
該函數的功能是在string對象中查找對象,若是在string出現了徹底不匹配的字符,字符串或以空字符結尾的
字符數組時,系統顯示第一次出現這種情形的位置。若是定義了pos,從pos開始搜索。
find_first_of()函數的常見語法以下所示:
size_t find_first_of( const string& str, size_t pos = 0 ) const;
size_t find_first_of( const char* s, size_t pos, size_t n ) const;
size_t find_first_of( const char* s, size_t pos = 0 ) const;
size_t find_first_of( char c, size_t pos = 0 ) const;
該函數的功能是在string對象中查找對象,若是在string出現了任意徹底匹配的字符,字符串或以空字符結尾
的字符數組時,系統顯示第一次出現這種情形的位置。若是定義了pos,從pos開始搜索。只要在string對象中出現了
匹配對象,當即返回位置。
find_last_not_of()函數的常見語法以下所示:
size_t find_last_not_of( const string& str, size_t pos = npos ) const;
size_t find_last_not_of( const char* s, size_t pos, size_t n ) const;
size_t find_last_not_of( const char* s, size_t pos = npos ) const;
size_t find_last_not_of( char c, size_t pos = npos ) const;
該函數的功能是在string對象中反向查找對象,若是在string出現了任意徹底不匹配的字符,字符串或以空
字符結尾的字符數組時,系統顯示第一次徹底不匹配時出現的位置。若是定義了pos,從pos反向開始搜索。只要
在string對象中出現了徹底不匹配的對象,當即返回位置值。
find_last_of()函數的常見語法以下所示:
size_t find_last_of( const string& str, size_t pos = npos ) const;
size_t find_last_of( const char* s, size_t pos, size_t n ) const;
size_t find_last_of( const char* s, size_t pos = npos ) const;
size_t find_last_of( char c, size_t pos = npos ) const;
該函數的共是在string對象中反向查找對象,若是在string出現了任意徹底匹配的字符,字符串或以空字符結
尾的字符數組時,系統顯示第一次出現這種情形的位置。若是定義了pos,從pos開始反向搜索。只要在string對象
中出現了匹配的對象,則當即返回位置值。
ios
字符串查找實例find_first_of()web
[cpp] view plaincopy數組
<EMBED id=ZeroClipboardMovie_1 height=18 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=1&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">app
#include <iostream> 函數
#include <string> oop
using namespace std; spa
int main(int argc, char *argv[]) .net
{ orm
string str1("Heartbeat"); 對象
string str2("abcde");
int iPos = 0;
cout << "The string to search is '" << str1.c_str() << "'" << endl;
//find the first instance in str1 of any characters in str2
iPos = str1.find_first_of(str2, 0);
cout << "Element in '" << str2.c_str() << "' found at position " << iPos << endl;
//start looking in the third position
iPos = str1.find_first_of(str2, 2);
cout << "Element in '" << str2.c_str() << "' found at position " << iPos << endl;
//use an array of the element type as the set of elements to search for;
//look for anything after the fourth position
char achVowels[] = {'a', 'e', 'i', 'o', 'u'};
iPos = str1.find_first_of(achVowels, 4, sizeof(achVowels));
cout << "Element in '";
for (int i = 0; i < sizeof(achVowels); ++i)
{
cout << achVowels[i];
}
cout << "' found at position " << iPos << endl;
//use a string literal to specify the set of elements
char szVowels[] = "aeiou";
iPos = str1.find_first_of(szVowels, 0);
cout << "Element in '" << szVowels << "' found at position " << iPos << endl;
//look for a specific character beginning in the third position
iPos = str1.find_first_of('e', 2);
cout << "'e' found at position " << iPos << endl;
return 0;
}
運行結果爲:
The string to search is 'Heartbeat'Element in 'abcde' found at position 1Element in 'abcde' found at position 2Element in 'aeiou' found at position 6Element in 'aeiou' found at position 1'e' found at position 6