【问题标题】:std::string::erase is deleting all the characters following the iterator instead of only the iteratorstd::string::erase 正在删除迭代器之后的所有字符,而不仅仅是迭代器
【发布时间】:2021-09-25 00:06:13
【问题描述】:

我正在尝试从字符串中删除一个字符。我试过下面的代码:

size_t it = s.find(char(i+97)); //dont mind the i, it is just the int in a for loop.
s.erase(it);

这是一个测试用例:
输入:“cccaabababaccbc”
输出:“ccc”
关于为什么会发生这种情况的任何想法?

【问题讨论】:

  • 当你传入一个索引时,要擦除,它会一直到字符串的末尾。将其更改为 s.erase(it,1)。第二个参数表示要删除的字符数。我建议不要将变量命名为 it,该名称通常用于迭代器类型。
  • @RehmaanMomin 非常感谢,它现在可以工作了。如果可能的话,您能否发表您的评论作为答案?

标签: c++ string stl find erase


【解决方案1】:

当你传入一个索引时,要擦除,它会一直到字符串的末尾。将其更改为 s.erase(it,1)。第二个参数表示要删除的字符数。

我建议不要将变量命名为 it,该名称通常用于迭代器类型。

如果您将迭代器传递给擦除,则仅删除该字符。

这是文档:https://www.cplusplus.com/reference/string/string/erase/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2017-01-07
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多