当前位置:  开发笔记 > 编程语言 > 正文

为什么在非空字符串中查找空字符串会返回0

如何解决《为什么在非空字符串中查找空字符串会返回0》经验,为你挑选了1个好方法。

我刚刚注意到string :: find的这种奇怪行为.我有一个非空字符串b和另一个空字符串a.当我调用b.find(a)时,它应返回npos但返回0.

#include 
#include 
using namespace std;

int main() {
    // your code goes here
    string a , b("ABC");
    if ( string::npos == b.find(a) ) std::cout << std::endl << "TRUE" << std::endl;
    return 0;
}

上面的代码打印不正确.有人可以解释一下这意味着什么吗?由于a是空的并且b是非空的,因此在非空中找到空字符串没有意义,因此错误.所以它应该返回npos

谢谢



1> eerorika..:

空字符串是所有字符串的子字符串.存在空子字符串的第一个位置是第一个索引.find返回找到第一个子字符串的第一个索引.

如果空子字符串的定义让您感到困惑,请考虑检查字符串是否为子字符串的算法.该算法检查潜在子字符串中的每个字符,并将其与另一个字符串中的相应字符进行比较.如果任何字符不匹配,则它不是子字符串.如果到达搜索到的字符串的末尾,那么它就是匹配.在空字符串的情况下,没有字符可以不同,因为没有字符.立即到达结束,结论是空字符串是子字符串.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有