C ++ - string.replace无效

时间:2014-03-13 22:42:23

标签: c++ string visual-studio-2010 replace

我正在查看一些示例,我似乎无法理解为什么字符串替换功能不起作用。我正在使用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 ++引用网站中解释的那样工作。

2 个答案:

答案 0 :(得分:2)

string replace会更改字符串的内容。您的字符串标记为const。这意味着你不能在其上调用替换。

答案 1 :(得分:2)

Replace修改字符串的内容(非const成员函数)。您正在传递 const 对该函数的引用。这就是为什么替换会给你错误。

您不能在const对象上调用非const成员函数。


错误信息本来可以更加清晰。