Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Zamienianie znaków w tekście

Ostatnio zmodyfikowano 2015-12-24 13:10
Autor Wiadomość
Euvarios
Temat założony przez niniejszego użytkownika
[C++] Zamienianie znaków w tekście
» 2015-12-24 12:50:51
Zacznijmy od najważniejszego, wesołych Świąt! A teraz przejdę do sedna sprawy... Napisałem prosty programik, który miał zastępować podane znaki w tekście innymi również podanymi wcześniej znakami... Tutaj skrypt owego programu:

C/C++
#include <iostream>
#include <string>

void zamienianieZnakow( std::string & tekst, char znak1, char znak2, char zamieniony1, char zamieniony2 )
{
    size_t pozycjaZnaku = - 1;
   
    do
    {
        pozycjaZnaku = tekst.find( znak1, pozycjaZnaku + 1 );
        tekst.erase( pozycjaZnaku );
        tekst.insert( pozycjaZnaku, zamieniony1 );
    } while( pozycjaZnaku != std::string::npos );
   
    pozycjaZnaku = - 1;
   
    do
    {
        pozycjaZnaku = tekst.find( znak2, pozycjaZnaku + 1 );
        tekst.erase( pozycjaZnaku );
        tekst.insert( pozycjaZnaku, zamieniony2 );
    } while( pozycjaZnaku != std::string::npos );
   
}

int main()
{
    std::string tekst = "<b>to jest </b> testowy       napis     <b>:)";
    zamienianieZnakow( tekst, '<', '>', '[', ']' );
    std::cout << tekst;
   
    return 0;
}

Jak pewnie domyślacie się po miejscu gdzie ten temat się znajduję coś nie chce działać a ja nie mam pojęcia co...
Tutaj jeszcze logi: http://screenshot.sh/m2aOaqPWjTseK
Domyślam się, ze problem leży gdzieś w komendzie tekst.insert ale nie wiem na czym on polega... Chciałbym prosić o waszą pomoc... Z góry dziękuję
P-142301
Monika90
» 2015-12-24 13:03:50
Po pierwsze wywołujesz erase oraz insert, nawet gdy find nic nie znajdzie. A w ogóle po co erase/insert, kiedy można po prostu zamienić znak na wskazanej pozycji: tekst[pozycja] = 'X';.
P-142302
Euvarios
Temat założony przez niniejszego użytkownika
» 2015-12-24 13:10:05
Dzięki za pomoc, faktycznie nie pomyślałem o czymś tak prostym... Poprawiłem i działa...
P-142305
« 1 »
  Strona 1 z 1