对于以下代码段中的const string
引用变量str
:
效果很好:for(int i=0; str[i]; i++)
引发错误:for(int i=0; *(str+i); i++)
错误:错误:不匹配'运营商+' (操作数类型是' const string {aka const std :: basic_string}'和' int')
// Return true if str is binary, else false
bool isBinary(const string &str)
{
for(int i=0; *(str+i); i++){
if(str[i]!='0' && str[i]!='1')
return false;
}
return true;
}
P.S。:我能理解这可能是一个天真的问题,但是我很乐意被重定向到有用的资源!
答案 0 :(得分:2)
lock(this)
{}
属于str
类型,不是std::string
,并且没有为其定义char*
,您可以做的是通过{获取其大小{ {1}}成员函数:
operator+(int)
另一方面,如果你有一个c字符串,你可以做第二种形式,因为c字符串只是空终止的char数组。
length
另外,你可以从c ++的bool isBinary(const string &str)
{
for(int i=0; i < str.length(); i++){
if(str[i]!='0' && str[i]!='1')
return false;
}
return true;
}
获得带有bool isBinary(const char *str)
{
for(int i=0; *(str+i); i++){
if(str[i]!='0' && str[i]!='1')
return false;
}
return true;
}
成员函数的c字符串。
std::string