我想从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”
答案 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;