我在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,”?“)时才能正常工作;”
为什么函数以这种方式工作?谁能帮帮我呢?
答案 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(), '?');