Необходимо подсчитать и удалить символы ":" в строке С++

Дан массив символов. Удалить символ «двоеточие» (:) и подсчитать количество удаленных символов. Вот что у меня вышло но программа не работает, посчитать количество символов вышло а удалить их нет.

#include<iostream>
#include<string>
#include<algorithm>
#include<ctype.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "ru");
    string str = "sdgdsfg:fsdgf:sgdsdb:afewfv:awrm cs";
    cout << str << endl;
    int n = count(str.begin(), str.end(), ':');
    for (int i = 0; i < str.length(); i++) str.erase(':');//Проблема в этой строке
    cout << n << endl;
    cout << str << endl;
    system("pause");
}

Ответы (2 шт):

Автор решения: Harry

Тогда уж сделайте так:

int n = count(str.begin(), str.end(), ':');
size_t pos;
while((pos = str.find(':')) != str.npos) str.erase(pos,1);
cout << n << endl;

А то вы все стараетесь удалять символ в позиции с номером, равным ASCII-коду ;.

→ Ссылка
Автор решения: AR Hovsepyan

Я бы предпочел вариант перемещения в конец и одной операции удаления:

auto A = std::remove(str.begin(), str.end(), ':'),
    B = str.end();    
str.erase( A, B);
cout << str << '\n' << B - A;
→ Ссылка