C++ Can';t检查字符"-&引用;串
我想检查这个字符串中是否有一个元素是“-”C++ Can';t检查字符"-&引用;串,c++,C++,我想检查这个字符串中是否有一个元素是“-” bool End(字符工作[]) { int stop=strlen(工作); for(int i=0;i
bool End(字符工作[])
{
int stop=strlen(工作);
for(int i=0;i
“-”
是一个c字符串,而您需要的是一个字符
改用'-'
您可以将函数重写为
bool End(const char s[])
{
return std::any_of(s, s + strlen(s), [](char c) { return c == '-'; });
}
如果要比较单个
字符
,则需要使用'-'
文本,而不是“-”
另外,我建议使用std::string
代替char[]
。这种代码的现代替代品可能是
#include <algorithm>
#include <string>
bool End(std::string const& work)
{
return std::any_of(begin(work),
end(work),
[](char c){ return c == '-'; });
}
代码中有两个错误 1.如前所述,
“-”
是一个cstring
,但work[i]
返回一个字符,因此您可能希望将其与字符进行比较。因此,“-”
应替换为“-”
2.您编写return
语句的方式不正确。这也会导致逻辑错误。在您的例子中,如果您已经纠正了Jarod42指出的错误,那么如果字符串的第一个字符不是'-'
,那么函数将返回false,而不管字符串是否包含字符'-'
。将其更改为:
for( ... ){
if(work[i]=='-'){
return true;
}
}
return false;
删除
else{return false;}
部分,并更改最后一个return true
to返回false代码>使用和它的查找
成员或至少。
#include <string>
bool End(std::string const& work)
{
return work.find('-') != std::string::npos;
}
for( ... ){
if(work[i]=='-'){
return true;
}
}
return false;