私のコードをデバッグするのに助けが必要です。私は多くのことを試しましたが、文字列から文字を削除できないようです。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;
}
EDIT:あまりにも曖昧です。私は意図した文字列ではなく配列から何かを削除しようとするという私の問題を認識しました。投稿された回答の助けを借りて。その下に添付された更新されたコードが、私が望むように動作します。あなたのお返事ありがとうございます!
#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
'n'に格納されている文字を' s'から削除したいようです。 'n'も' i'も配列ではないので、 'n [i]'という表現は不正です。メンバー 'erase()'は、文字をある位置から所定の長さ(デフォルトでは文字列の最後まで)で消去します。実際に 's'から' n'のインスタンスを削除したい場合は 'std :: remove()'を見てください。 –
そのコードはコンパイルされません(https://ideone.com/3M01b4)。 [mcve]を投稿してください。 –