string——erase用法
阿新 • • 發佈:2018-12-13
erase的3種用法:
(1)string& erase ( size_t pos = 0, size_t n = npos );
(2)iterator erase ( iterator position );
(3)iterator erase ( iterator first, iterator last );
-
erase(pos,n); 刪除從pos開始的n個字元,比如erase(0,1)就是刪除第一個字元
-
erase(position); 刪除position處的一個字元(position是個string型別的迭代器)
-
erase(first,last);
int test() { string str("This is an example phrase."); string::iterator it; // 第(1)種用法 str.erase(10, 8); cout << str << endl; // "This is an phrase." // 第(2)種用法 it = str.begin() + 9; str.erase(it); cout << str << endl; // "This is a phrase." // 第(3)種用法 str.erase(str.begin() + 5, str.end() - 7); cout << str << endl; // "This phrase." return 0; }
結果:
This is an phrase.
This is a phrase.
This phrase.
請按任意鍵繼續. . .
例子:去掉字串中的重複字元
int color_brick(string str){ int res = 0; sort(str.begin(), str.end()); cout << "sorted: " << endl << str << endl; str.erase(unique(str.begin(), str.end()), str.end()); //unique的作用:是“去掉”容器中相鄰元素的重複元素,這裡去掉要加一個引號,為什麼呢,是因為它實 質上是一個偽去除,它會把重複的元素新增到容器末尾,而返回值是去重之後的尾地址(是地址!) cout << "erased: " << endl << str << endl; if (str.size() == 1) res = 1; else if (str.size() == 2) res = 2; return res; } void test(){ string str; while (true){ cin >> str; cout << color_brick(str) << endl; } }
結果:
sakdnasd9oqwdnas
sorted:
9aaadddknnoqsssw
erased:
9adknoqsw