我正在查看一些示例,我似乎无法理解为什么字符串替换功能不起作用。我正在使用Visual C ++ 2010
我想编译的代码行是:
string MyClass::replacestr (const string &input){
string subString = "str";
string subString2 = "STR";
for(int index = input.find(subString); index != string::npos; index = input.find(subString, index +subString.length()))
{
input.replace(index, 2, subString2);
}
}
它在visual studio中给了我这个错误:
3 IntelliSense: no instance of overloaded function "std::basic_string<_Elem, _Traits, _Ax>::replace [with _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char>]" matches the argument list and object (the object has type qualifiers that prevent a match) c:\..test.cpp 36 Test
我只是不明白为什么它不会像c ++引用网站中解释的那样工作。
答案 0 :(得分:2)
string replace会更改字符串的内容。您的字符串标记为const。这意味着你不能在其上调用替换。
答案 1 :(得分:2)
Replace修改字符串的内容(非const成员函数)。您正在传递 const
对该函数的引用。这就是为什么替换会给你错误。
您不能在const对象上调用非const成员函数。
错误信息本来可以更加清晰。