c++ - 如何从 C++ 中的字符串中删除一个字符?

标签 c++ string

我需要帮助调试我的代码。我已经尝试了很多东西,但我似乎无法从字符串中删除一个字符。

我也不完全理解 std::erase 是如何工作的,我不确定你是否可以用它删除字符。

#include <iostream>
#include <string>

using namespace std;
int main(){

    string s;
    char n;
    cin >> s;
    cin >> n;

    for (int i = 0;i < s.length(); i++) {
        s.erase (n[i]);
    }

    cout << s;

    return 0;

}

编辑:抱歉这么含糊。我认识到我试图从数组中删除某些内容而不是预期的字符串的问题。借助发布的答案;更新后的代码附在下面,可以按照我想要的方式工作。感谢您的回复!

#include <iostream>
#include <string>

using namespace std;
int main(){

string s;
char n;
cin >> s;
cin >> n;

for (int i = 0; i < s.length(); i++) {
    while (s[i] == n) {
      s.erase(i, i);
    }
}

cout << s;

return 0;

}

最佳答案

使用 erase-remove idiom :

#include <iostream>
#include <string>
#include <algorithm>

int main() {

    std::string s = "Hello World!";
    s.erase(std::remove(s.begin(), s.end(), 'l', s.end());
    std::cout << s << std::endl;
    return 0;
}

分解为两个语句:

#include <iostream>
#include <string>
#include <algorithm>

int main() {

    std::string s = "Hello World!";
    auto it = std::remove(s.begin(), s.end(), 'l');
    s.erase(it, s.end());
    std::cout << s << std::endl;
    return 0;
}

关于c++ - 如何从 C++ 中的字符串中删除一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41325344/

相关文章:

c++ - C++ 中的异构容器

c# - C# 中字符串的赋值和创建实例有什么区别?

string - “相乘”字符串单元格以形成组合字符串的 MxN 大小单元格数组

c - Pascal 字符串到 cstring

Javascript split() 不起作用!完全难住了

c++ - 我如何在 monodevelop (C++) 中链接 SDL 和 GL

c++ - 如何使用线程将值异步映射到函数?

c++ 如何在文件中打印带逗号(而不是点)的双十进制数

c++ - 为什么我不能在成对的优先级队列中简单地覆盖 < ?

java - 如何将字符串从一个 JFrame 传递到现有 JFrame