替换std :: string中的函数,在C ++中给出问题

时间:2012-07-20 05:29:22

标签: c++ string cocos2d-x

我在cocos2dx中使用C ++字符串函数。我有以下字符串CorrectAns =“below”。

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

这个函数应该将我的字符串作为“?????”返回,但它只返回4个字符,即“????”。

当我这样写的时候,

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

它只是崩溃了。 只有当我把它写成“CorrectAns.replace(i,i + 1,”?“)时才能正常工作;”

为什么函数以这种方式工作?谁能帮帮我呢?

1 个答案:

答案 0 :(得分:4)

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

对于参数为pos1和n1的版本,替换了该部分   从字符位置pos1开始,跨越n1个字符   字符串。

所以你应该使用

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

使用像

这样的东西会更有用
CorrectAns.assign(CorrectAns.size(), '?');