Search code examples
c++stringcocos2d-x

replace function in std::string giving problems in C++


I am using C++ string functions in cocos2dx. I have the following string CorrectAns = "below".

for(int i = 0; i<CorrectAns.size();i++)
{
      CorrectAns.replace(i,i,"?");
}

This function should return my string as "?????", but its returning only 4 charcters ie "????".

When I write like this,

for(int i = 0; i<CorrectAns.size();i++)
{
if(i == 0)
    {
      CorrectAns.replace(i,i,"?");
    }
}

It just crashes. and works fine only when I write it as " CorrectAns.replace(i,i+1,"?");"

Why is the function working this way?? Can anyone help me please??


Solution

  • string& replace ( size_t pos1, size_t n1,   const string& str );
    

    For the versions with parameters pos1 and n1, the section replaced begins at character position pos1 and spans for n1 characters within the string.

    So you should use

    for(int i = 0; i<CorrectAns.size();i++)
    {
          CorrectAns.replace(i,1,"?");
    }
    

    Mb it will be more usefull use something like

    CorrectAns.assign(CorrectAns.size(), '?');