我需要帮助调试我的代码。我尝试了很多东西,但我似乎无法从字符串中删除字符。如何从C++中的字符串中删除字符?
我也不完全了解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;
}
什么是'n [i]'甚至应该是什么?在这段代码中没有任何意义,我不知道你希望它成为什么 – UnholySheep
看起来你想从's'中移除存储在'n'中的字符。既然'n'和'i'都不是数组,'n [i]'表达式似乎是非法的。成员'erase()'从一个位置删除具有给定长度的字符(默认情况下直到字符串的末尾)。如果你确实想从's'中删除'n'的实例,你应该看看'std :: remove()'。 –
该代码[不编译](https://ideone.com/3M01b4)。请发布[mcve]。 –