[C++] Zamienianie znaków w tekście
Ostatnio zmodyfikowano 2015-12-24 13:10
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: #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ę |
|
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';.
|
|
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... |
|
« 1 » |