今天在刷Leetcode每日一题时,用到了string
的find
函数,但因为第一次使用,缺乏经验,导致我出现了下面的错误:
我试图在字符串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
中;而这里明显不是;
string
中find()
返回值是字母在母串中的位置(下标索引),如果没有找到,那么会返回一个特别的标记npos
(返回值可以看成是一个int型的数),而这个npos
是字符串一个自带的成员变量
所以,如果我们要使用find()
函数判断字符c
是否在字符串s
中,可以if(s.find(c)==s.npos)
,如果等于,说明没找到,否则返回c的下标;