Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
仅这一部分就使我的程序崩溃。这是为什么?这是在字符串中的每个“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;
(您在代码中写了 'u' 而不是 'h'。)
假设您的字符串只是“p”。所以 s[0] == 'p'。现在您在 0 处插入 'h',因此字符串现在是“hp”(h 在 p 之前,而不是在您想要的之后)。在下一次迭代中 i 是 1 并且有 ap (它刚刚移到那里),因此将插入另一个 h 。这种情况一直持续到内存不足。
尝试:
s.insert(i + 1, 1, 'h');