我想检查这个字符串中的任何一个元素是否为“ - ”?
bool End(char work[])
{
int stop = strlen(work);
for(int i = 0;i < stop;i++)
{
//c1 = strcmp(work[i],l);
if(work[i] == "-")
{
return true;
}else{
return false;
}
}
return true;
}
答案 0 :(得分:4)
"-"
是一个c字符串,而你期望一个字符。
改为使用'-'
。
你可以将你的功能重写为
bool End(const char s[])
{
return std::any_of(s, s + strlen(s), [](char c) { return c == '-'; });
}
答案 1 :(得分:2)
如果您想比较单个char
,则需要使用'-'
字面值,而不是"-"
。
顺便提一下,我建议使用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 == '-'; });
}
同样,您可以使用std::string
find
方法
#include <string>
bool End(std::string const& work)
{
return work.find('-') != std::string::npos;
}
答案 2 :(得分:2)
代码中有两个错误。
1.如@Jarod42所指出,"-"
是cstring
但work[i]
返回一个字符,因此您也希望将其与字符进行比较。因此"-"
应替换为'-'
。
2.编写return
语句的方式不正确。这也会导致逻辑错误。在您的情况下,如果您已更正了Jarod42指出的错误,如果字符串的第一个字符不是'-'
,则该函数返回false,而不管该字符串是否包含字符'-'
。将其更改为:
for( ... ){
if(work[i]=='-'){
return true;
}
}
return false;