Witam. Od paru ładnych godzin mam pewien problem z napisaniem funkcji, która dany ciąg znaków wczytanych z pliku, np: gewdaaadrrrrvvd, zamieni na: gewda|3dr|4v|2d, czyli w skrócie każde wielokrotne wystąpienie pewnego znaku np. aaaaa przerabia na wersję skrótową a|5. Myślałem żeby każdy znak wrzucać w tablice, następnie ja zwiększać i sprawdzać z poprzednim znakiem. Nie wiem czy dobrze próbowałem to zrobić, jeżeli jest ktoś w stanie mnie naprowadzić na odpowiedni tor, będę wdzięczny. Oto mój dotychczasowy kod:
void konwersja(const string &Chaos, const string &Konwersja)
{
ifstream plik;
plik.open(Chaos.c_str());
if(!plik.is_open())
throw "Blad otwierania pliku!";
ofstream plik2;
plik2.open(Konwersja.c_str());
if(!plik2.is_open())
{
plik.close();
throw "Blad otwierania pliku do konwersji!";
}
if(plik.good()==true && plik2.good()==true)
{
while(!plik.eof())
{
char c=plik.get();
plik2<<c;
}
}
plik.close();
plik2.close();
}
int main()
{
ofstream("konwersja.txt");
try
{
konwersja("chaos.txt","konwersja.txt");
}catch(const char *wiadomosc)
{
cerr<<wiadomosc<<endl;
}
return 0;
}