A w imię czego się tak nad sobą znęcasz? Możesz użyć kilku algorytmów aby to łatwo rozwiązać.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// Zmiana znaków < i >
string& zamienTagi(string& stekst) {
transform(stekst.begin(), stekst.end(), stekst.begin(),
[](char c) {
c = (c == '<' ? '[': c);
c = (c == '>' ? ']': c);
return c;
});
return stekst;
}
// Usunięcie nadmiarowych spacji..
string& usunSpacje(string& stekst) {
stekst.erase(unique(stekst.begin(), stekst.end(),
[](char a, char b) {
return (a == b) && (a == ' ');
}), stekst.end());
return stekst;
}
// I cała konwersja..
string& konwertuj(string& stekst )
{
return usunSpacje(zamienTagi(stekst));
}
int main()
{
string tekst = "<b>to jest </b> testowy napis <b>:)";
cout << konwertuj( tekst ) << endl;
}
PS. Nawet jeśli nie cały kod jest dla Ciebie zrozumiały, poczytaj o użytych algorytmach transform i unique. One bardzo ułatwiają programowanie.