我需要帮助调试我的代码。我已经尝试了很多东西,但我似乎无法从字符串中删除一个字符。
我也不完全理解 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/