0

仅这一部分就使我的程序崩溃。这是为什么?这是在字符串中的每个“p”之后添加一个“u”。

for(int i=0;i<s.size();i++)
{
    if((s[i]=='p'))
    {
        s.insert(i,1,'u');
    }
}
cout<<"after adding u after each p: "<<s;
4

1 回答 1

3

(您在代码中写了 'u' 而不是 'h'。)

假设您的字符串只是“p”。所以 s[0] == 'p'。现在您在 0 处插入 'h',因此字符串现在是“hp”(h 在 p 之前,而不是在您想要的之后)。在下一次迭代中 i 是 1 并且有 ap (它刚刚移到那里),因此将插入另一个 h 。这种情况一直持续到内存不足。

尝试:

s.insert(i + 1, 1, 'h');
于 2012-12-15T20:54:53.360 回答