有什么方法可以从字符串中删除字符吗?

时间:2019-12-06 08:47:54

标签: c++ windows

我想从string中删除字符('#'),

我尝试使用string函数检查find是否具有'#',然后尝试使用erase函数将其擦除。

由于某种原因,我收到一个运行时错误消息,提示我没有内存。

错误:std::out_of_range at memory location 0x003BF3B4

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

int main()
{
    std::string str = "Hello World#";

    if (str.find('#')) {
        str.erase('#');
    }

    return 0;
}

例外的输出是:“ Hello World”

3 个答案:

答案 0 :(得分:3)

尝试这样的事情:

#include <algorithm>
str.erase(std::remove(str.begin(), str.end(), '#'), str.end());

答案 1 :(得分:1)

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

int main()
{
    std::string s = "Hello World#";
    char c = '#';

    /* Removing character c from s */
    s.erase(std::remove(s.begin(), s.end(), c), s.end());
    std::cout << "\nString after removing the character "
              << c << " : " << s;
}

答案 2 :(得分:0)

如果要从字符串中删除所有“#”:

std::string str = "Hello World#";
std::size_t pos = str.find('#');
while(pos != std::string::npos)
{
    str.erase(pos, 1); //<- edited here
    pos = str.find('#');
}

cout << str;