取消引用与const字符串引用的索引

时间:2016-06-20 06:52:56

标签: c++ pointers

对于以下代码段中的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。:我能理解这可能是一个天真的问题,但是我很乐意被重定向到有用的资源!

1 个答案:

答案 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