如何使用C++中String的find函数

今天在刷Leetcode每日一题时,用到了stringfind函数,但因为第一次使用,缺乏经验,导致我出现了下面的错误:

我试图在字符串res中找字母c,如果找不到,就进入if语句,然后程序一直得不到正确结果,我就加了断点进行调试;
后来在网上搜在了解到find函数是如何使用的;

函数原型

std::allocator<char>>::size_type find(char __c, std::size_t __pos = 0ULL) const

  • __c是待查找的字母;
  • __pos是你想要从字符串的哪个位置(索引)开始查找,默认从字符串开头开始(即索引0);

如何使用

尤其注意它的返回类型std::allocator<char>>::size_type,它并不是一个我们常见的类型,我们通常使用xxx.find(c) == xxx.end()或者!xxx.find(c)来判断元素c是否在xxx中;而这里明显不是;
stringfind()返回值是字母在母串中的位置(下标索引),如果没有找到,那么会返回一个特别的标记npos(返回值可以看成是一个int型的数),而这个npos是字符串一个自带的成员变量

所以,如果我们要使用find()函数判断字符c是否在字符串s中,可以if(s.find(c)==s.npos),如果等于,说明没找到,否则返回c的下标;

posted @ 2020-12-20 09:56  Luweir  阅读(631)  评论(0编辑  收藏  举报