我需要幫助調試我的代碼。我嘗試了很多東西,但我似乎無法從字符串中刪除字符。如何從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]。 –