繁体   English   中英

CPP:string.find()==0 和 string.find:=string::npos 之间的区别

[英]CPP : Difference between string.find()==0 and string.find !=string::npos

Command* Function(const char* cmd_line) {

    string cmd = _trim(string(cmd_line));
    if(cmd.find(">") != string::npos)
    {
        return new something(cmd_line);
    }
  else if (cmd.find("pwd") == 0) {
    return new something1(cmd_line);
  }
  else if (cmd.find("chprompt") == 0){
      return new something2(cmd_line);
  }
...

为什么当我将第一个 IF 条件更改为 cmd.find(">")==0 时,我的程序不起作用。 它仅适用于 cmd.find.= npos,这两个 If 语句在逻辑上似乎没有区别。 所以这真的没有意义。

find()返回找到 substring 的 position。

如果 substring 位于 position 0(即在字符串的确切开头),则返回 0 并且它不是失败。

npos是一个特殊值,不适用于字符串中任何有效的 position,用于在没有找到 substring 时报告失败。

find()如果找到则返回 substring 的索引,否则返回npos (-1)。

cmd.find(">") == 0仅当在cmd的开头找到">"时才会为真,例如"> command here"但不是"command > here"等。

cmd.find(">"):= string::npos如果">"cmd中的任何位置找到,则为真。

字符串是 Arrays,因此 0 是有效答案。 例如(没有真正的代码):

"Hallo World".find("Hallo")

将返回 0,因为该词在索引 0 处找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM