error C2664: “find_char”: 不能将参数 1 从“const char [14]”转换为“std::string &

清泛原创
出错代码:
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
//const引用形参举例
//非const引用形参只能与完全同类型的非const对象关联
std::size_t find_char(string &s,char c)
{
   string::size_type i = 0;
   while(i != s.size() && s[i] != c)
       ++i;
   if(i == s.size())
       return string::npos;
   else
       return i;
}
int main(int argc, char *argv[])
{
    //字面值常量为const对象,调用出错
    if(find_char("Hello, world.",'.') != string::npos)
    {
        cout<<"a sentence."<<endl;
    }
    return 0;
}
解决方法:如果函数不修改相应实参,应该将引用形参定义为const引用,这样字面值常量、const对象也能调用此函数,避免不必要的限制。

error C2664 find_char

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部