Do napisania mam takie zadanie.
Napisz program, który z podanego łańcucha znaków usunie powtarzające się spacje występujące obok siebie i zastąpi wszystkie znaczniki oraz znacznikami [b] oraz [/b]. Tekst, który powstanie w wyniku przeprowadzenia wspomnianych operacji wypisz na ekran.
#include <iostream>
#include <string>
using namespace std;
void konwertuj( string sTekst )
{
//string sWynik;
int pozSpac,poz1,poz2;
pozSpac=sTekst.find(' ');
while(pozSpac!=string::npos){
while(sTekst[pozSpac+1] ==' '){
sTekst.erase(pozSpac,1);
}
pozSpac=sTekst.find(' ',pozSpac+1);
}
poz1=sTekst.find('<');
poz2=sTekst.find('>');
while(poz1 != string::npos && poz2 != string::npos){
sTekst.erase(poz1, 1);
sTekst.insert(poz1, "[");
sTekst.erase(poz2, 1);
sTekst.insert(poz2, "]");
poz1 = sTekst.find('<', poz1 + 1);
poz2 = sTekst.find('>', poz2 + 1);
}
cout << sTekst << endl;
}
int main()
{
string str1="<b>to jest </b> testowy napis <b>:)";
string str2=" s a m e sp a c j e";
string str3="<<B><//b><i></i>";
konwertuj(str1);
konwertuj(str2);
konwertuj(str3);
return 0;
}
wychodzi:
" [b]to jest [/b] testowy napis [b]:) "
" s a m e sp a c j e "
" [[B][//b][i]</i] "
Powinno wyjść:
" [b]to jest [/b] testowy napis [b]:) "
" s a m e sp a c j e "
" [[B][//b][i][/i] "
W 3 zmiennej mi nie zmienia, zamiast [/i] mam </i]