Napisałem kod jako odpowiedz na 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 <b> oraz </b> znacznikami [b] oraz [/b]. Tekst, który powstanie w wyniku przeprowadzenia wspomnianych operacji wypisz na ekran. Użyj metod find, erase i insert.
//Microsoft Visual Studio
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
string konwertuj(string & sTekst)
{
string sWynik;
size_t szukajka2 = 0;
while (true)
{
size_t szukajka = sTekst.find(" ",szukajka2);
szukajka2 = sTekst.find(" ", szukajka + 1);
if (szukajka2 == szukajka + 1)
{
sTekst.erase(szukajka, 2);
}
else if (szukajka2 == string::npos)
{
break;
}
}
szukajka2 = 0;
while (true)
{
size_t szukajka = sTekst.find("<b>", szukajka2);
if (szukajka == string::npos)
{
break;
}
sTekst.erase(szukajka, 3);
sTekst.insert(szukajka, "[b]");
szukajka2 = szukajka;
}
szukajka2 = 0;
while (true)
{
size_t szukajka = sTekst.find("</b>", szukajka2);
if (szukajka == string::npos)
{
break;
}
sTekst.erase(szukajka, 3);
sTekst.insert(szukajka, "[/b]");
szukajka2 = szukajka;
}
sWynik = sTekst;
return sWynik;
}
int main()
{
string tekst = "<b>to jest </b> testowy napis <b>:)";
cout << konwertuj(tekst) << endl;
system("pause");
return 0;
}
Ale czuje że jest kompletnie nie zoptymalizowany. Jeżeli się mylę proszę mnie poprawić, jeżeli nie, proszę o poprawę mojego kodu (najlepiej w postaci podpowiedzi do poprawy). Dzięki za odpowiedz! :3