设为首页 加入收藏

TOP

3.3.7 使用find()成员函数
2013-10-07 14:43:02 来源: 作者: 【 】 浏览:72
Tags:3.3.7 使用 find 成员 函数

3.3.7  使用find()成员函数

接下来程序使用成员函数find()来检查两个字符串字面值是否包含在phrase中。首先检查的是字符串字面值"Over":

  1. cout << "\nThe sequence 'Over' begins at location ";  
  2. cout << phrase.find("Over") << endl

find()成员函数在string对象中搜索作为实参提供的"Over"字符串。该成员函数的返回值是要搜索的string对象在调用string对象中第一次出现的位置。也就是说,phrase.find("Over")返回"Over"在phrase中第一次出现的位置。因为phrase为"Lame Over!!!",所以find()的返回值为5(记住,位置从0开始,所以5表示第6个字符)。

但是如果要搜索的字符串在调用字符串中不存在,结果会怎样?下面介绍了处理这种情况的方法:

  1. if (phrase.find("eggplant") == string::npos)  
  2. {  
  3. cout << "'eggplant' is not in the phrase.\n\n";  
  4. }  

因为phrase中不存在"eggplant",所以find()返回文件string中定义的一个特殊常量,该常量通过string::npos来访问。因此,屏幕显示消息"'eggplant' is not in the phrase."。

通过string::npos访问的常量表示string对象可能的最大长度。因此,它比对象中的任意可能的合法位置都要大。通俗地讲,它表示"一个不可能存在的位置"。这是说明无法找到子字符串的绝佳返回值。

提示

当使用find()时,可以提供一个可选实参,用于指定查找子字符串的起始位置。下面一行代码将从string对象phrase的位置5开始查找字符串字面值"eggplant"。

  1. location = phrase.find("eggplant", 5); 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.3.8 使用erase()成员函数 下一篇3.3.6 循环访问string对象

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: