-1

我在 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,"?");”时才能正常工作

为什么该功能以这种方式工作?任何人都可以帮助我吗?

4

1 回答 1

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,"?");
}

Mb 使用类似的东西会更有用

CorrectAns.assign(CorrectAns.size(), '?');
于 2012-07-20T05:31:57.090 回答