![](/img/trans.png)
[英]Why does std::string.find(text,std::string:npos) not return 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.