使用string::iterator(字符串迭代器)從開始 str.begin() 迭代到最后 str.end() ,再使用string.erase(const_iterator p)函數來刪除迭代器所指向的字符。
#include <iostream> #include <string> using namespace std; int main() { string str; char ch; cin >> str; cin >> ch; string::iterator it; for (it = str.begin(); it < str.end(); it++) { if (*it == ch) { str.erase(it); it--; /* it--很重要,因為使用erase()刪除it指向的字符后,后面的字符就移了過來, it指向的位置就被后一個字符填充了,而for語句最后的it++,又使it向后移 了一個位置,所以就忽略掉了填充過來的這個字符。在這加上it--后就和for 語句的it++抵消了,使迭代器能夠訪問所有的字符。 */ } } cout << str; return 0; }
