Необходимо подсчитать и удалить символы ":" в строке С++
Дан массив символов. Удалить символ «двоеточие» (:) и подсчитать количество удаленных символов. Вот что у меня вышло но программа не работает, посчитать количество символов вышло а удалить их нет.
#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;