2014-03-13 82 views
0

我正在通過一些例子看,我似乎無法看到爲什麼字符串替換功能不工作。我使用的Visual C++ 2010C++ - string.replace不工作

的代碼我試圖編譯行是:

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++ refernce網站上解釋的方式工作。

回答

2

字符串替換改變了字符串的內容。你的字符串被標記爲const。這意味着你不能在它上面調用replace。

+0

耶穌,這是漫長的一天。謝謝回覆。 –

2

替換修改字符串的內容(是非常量成員函數)。您正在傳遞一個const對該函數的引用。這就是爲什麼替換給你錯誤。

您不能在const對象上調用非const成員函數。


雖然錯誤信息可能已經更清楚了。