C++中string::find()函數和string::npos函數的使用


1. string::find()函數和string::npos函數的介紹

我們在學習C++的時候必不可少的使用到string類中的find()函數,它是一個查找函數,功能還是很強大的,但是此處我們不對他進行過多的講解只是了解它的基本使用,最重要的是和string::npos的關系。

 

string::find()函數:是一個字符或字符串查找函數,該函數有唯一的返回類型,即string::size_type,即一個無符號整形類型,可能是整數也可能是長整數。如果查找成功,返回按照查找規則找到的第一個字符或者子串的位置;如果查找失敗,返回string::npos,即-1(當然打印出的結果不是-1,而是一個很大的數值,那是因為它是無符號的)。

 

string::npos靜態成員常量:是對類型為size_t的元素具有最大可能的值。當這個值在字符串成員函數中的長度或者子長度被使用時,該值表示“直到字符串結尾”。作為返回值他通常被用作表明沒有匹配。

string::npos是這樣定義的:static const size_type npos = -1;

 

因為string::size_type描述的是size,故需為無符號整數型類別。因為缺省配置為size_t作為size_type,於是-1被轉換為無符號整數類型,npos也就成為了該類別的最大無符號值。不過實際值還是取決於size_type的實際定義類型,即無符號整型(unsigned int)的-1與無符號長整型(unsigned long)的-1是不同的。

 

2. 舉例學習string::find()函數和string::npos靜態成員常量的使用

#include
std::string s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");
void result(const char* p)
{
std::string::size_type position = s.find(p);
if ( position != std::string::npos )
{
std::cout << "Position is : " << position << std::endl;
}
else{
std::cout << "Not found." << std::endl;
}
}
 
int main()
{
result("jk");
result("b3");
 
return 0;
}
 

 

運行結果:

Not found.
Position is : 3
請按任意鍵繼續. . .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM