C 從string中刪除所有的某個特定字元

2021-07-26 11:25:54 字數 2578 閱讀 2780

c++中要從string中刪除所有某個特定字元, 可用如下**

str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());

其中,remove來自, 它的簽名是

template

forwarditerator remove (forwarditerator first, forwarditerator last, const t& val);

作用: 在容器中, 刪除[first, last)之間的所有值等於val的值.

刪除方法: 將某個等於val的值用下乙個不等於val的值覆蓋.

返回值: 乙個迭代器 (記作newend), 該迭代器指向最後乙個未被刪除元素的下乙個元素, 即相當於容器新的end.

所以, 執行完remove後, 容器的[first, newend)內的元素即為所有未被刪除的元素,[newend, end)之間的元素已經沒用了.

這樣, 再執行str.erase(newend, str.end())即可清空[newend, end)之間的元素.

std::remove_ifremove類似, 只是它接受的第三個引數是個函式.

// remove_if example

#include

// std::cout

#include

// std::remove_if

bool isodd (int i)

int main () ; // 1 2 3 4 5 6 7 8 9

// bounds of range:

int* pbegin = myints; // ^

int* pend = myints+sizeof(myints)/sizeof(int); // ^ ^

pend = std::remove_if (pbegin, pend, isodd); // 2 4 6 8 ? ? ? ? ?

// ^ ^

std::cout << "the range contains:";

for (int* p=pbegin; p!=pend; ++p)

std::cout << ' '

<< *p;

std::cout << '

\n';

return

0;}

output:

myvector contains: 10

3030

101000

0

還有個std::remove_copy, 簽名:

template

outputiterator remove_copy (inputiterator first, inputiterator last,

outputiterator result, const t& val);

它會把[first, last)之間不等於val的元素都向從result開始的容器拷貝.

// remove_copy example

#include

// std::cout

#include

// std::remove_copy

#include

// std::vector

int main () ; // 10 20 30 30 20 10 10 20

std::vector myvector (8);

std::remove_copy (myints,myints+8,myvector.begin(),20); // 10 30 30 10 10 0 0 0

std::cout << "myvector contains:";

for (std::vector::iterator it=myvector.begin(); it!=myvector.end(); ++it)

std::cout << ' '

<< *it;

std::cout << '

\n';

return

0;}

output:

myvector contains: 10

3030

101000

0

刪除某資料庫下所有的表

刪除某資料庫下所有的表,謹慎執行。建議坐下資料庫備份後再執行。如果是新庫請隨意。執行之前,一定要檢查庫是不是正確的!執行之前,一定要檢查庫是不是正確的!執行之前,一定要檢查庫是不是正確的!執行之前,一定要檢查庫是不是正確的!執行之前,一定要檢查庫是不是正確的!執行之前,一定要檢查庫是不是正確的!執行...

python 刪除list中某所有元素

突然記起來一年前剛入行時,領導面試我時提的問題,刪除list中所有等於某個值的元素 比如 刪除 1,2,3,4,1,2,3,4,1,3,4 中所有的2元素 刪除元素常用 remove,pop 方法,remove可以直接刪除某個值 list.remove 1 但是每次只能刪除第乙個,且如果list中不...

從git中 從所有提交記錄中刪除檔案

將之前提交過的檔案從版本中刪除 git filter branch help解釋 git filter branch rewrite branches 語法git filter branch env filter tree filter index filter parent filter msg ...