gpt4 book ai didi

c++ - 为什么不是所有的字符串字符都被访问?

转载 作者:行者123 更新时间:2023-12-01 13:51:37 24 4
gpt4 key购买 nike

我的程序的目的是删除字符串中的所有元音。

std::string disemvowel(std::string str)
{
for (unsigned int i = 0; i < str.length(); ++i)
{
switch(str[i])
{
case 'A':
case 'a':
case 'E':
case 'e':
case 'I':
case 'i':
case 'O':
case 'o':
case 'u':
case 'U': str.erase(str.begin() + i);
break;
default:
break;
}
}

return str;
}

输入字符串:aaAAAaiieEeOoU,,,.,132@

访问和删除的字符为:aAaiEOU,,.,132@

结果字符串:aAieeo,,,.,132@

该程序似乎永远不会访问上面的元音。

我认为我如何处理这个问题没有任何问题。我应该访问字符串中的每个字符直到其长度结束,不是吗?

最佳答案

每次删除一个字符,str改变,然后当你增加 i ,您正在跳过下一个字母。

通常,在迭代序列时不要从序列中删除内容,但是如果您使用索引进行迭代,那么一个好技巧就是尽可能地向后移动。您正在更改 i 之后的所有内容,但你不在乎。

关于c++ - 为什么不是所有的字符串字符都被访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62310946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com