/ / C ++ - string.replace nefunguje - c ++, string, visual-studio-2010, nahradiť

C ++ - string.replace nefunguje - c ++, string, visual-studio-2010, nahradiť

Pozerám sa cez niektoré príklady a nezdá sa mi, že by som vedel, prečo nefunguje funkcia nahradenia reťazca. Používam Visual C ++ 2010

riadok kódu, ktorý sa pokúšam kompilovať, je:

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);
}

}

To mi dáva túto chybu vo vizuálnom štúdiu:

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

Len som don "t pochopiť, prečo to zvyknutý pracovať tak, ako to bolo vysvetlené v c + + odkaz webovej stránky.

odpovede:

2 pre odpoveď č. 1

reťazec nahradí obsah reťazca. Váš reťazec je označený ako konšt. To znamená, že nemôžete na to zavolať.


2 pre odpoveď č. 2

Nahradiť modifikuje obsah reťazca (nie je členskou funkciou). Prechádzate okolo const odkaz na funkciu. To je dôvod, prečo vám náhrada dáva chyby.

Nemôžete volať funkciu non const člena na objekt const.


Chybové hlásenie však mohlo byť oveľa jasnejšie.