Modyfikowanie tekstu i sprawdzanie jego długości
Ostatnio zmodyfikowano 2012-12-01 18:41
whiskas Temat założony przez niniejszego użytkownika |
Modyfikowanie tekstu i sprawdzanie jego długości » 2012-12-01 16:23:45 Witam, Mam jedno pytanie, zrobiłem zadanie domowe z tego rozdziału, ale, jedna rzecz mnie tylko irytuje, dlaczego po sprawdzeniu długości nowego łańcucha (który jest krótszy) ma on taką samą długość co poprzedni łańcuch, który był dłuższy, możecie mnie poinformować, co jest źle i jak zrobić, żeby program sprawdził długość nowego łańcucha? #include <iostream> #include <string>
std::string konwertuj( std::string & sTekst ) { std::string sWynik; sWynik.insert( 0, sTekst ); sWynik.erase( 0, 3 ); sWynik.insert( 0, "[b]" ); sWynik.erase( 10, 5 ); sWynik.insert( 10, "[/b]" ); sWynik.erase( 35, 4 ); sWynik.erase( 23, 10 ); return sWynik; } int main() { std::string tekst = "<b>to jest </b> testowy napis :)"; std::cout << konwertuj( tekst ) << std::endl; std::cout << "\nDlugosc stringu:" << tekst.size(); return 0; }
|
|
Mrovqa |
» 2012-12-01 16:32:04 Spróbuj przedebuggować kod instrukcja po instrukcji. |
|
xevuel |
» 2012-12-01 16:32:12 Bo obcinasz łańcuch b, a wypisujesz długość łańcucha a. Zobacz, twoja funkcja nie operuje na przekazanym jej w argumencie stringiem - tworzy sobie własny (identyczny). Wszelkie modyfikacje są przeprowadzane na tym lokalnym, który jest zwracany z funkcji, ale od razu wypisywany, nigdzie nie przypisywany. Jeśli zamienisz: std::cout << konwertuj( tekst ) << std::endl;
na: tekst = konwertuj( tekst ); std::cout << tekst << std::endl;
Wszystko powinno działać jak chcesz. |
|
whiskas Temat założony przez niniejszego użytkownika |
» 2012-12-01 18:41:12 Thx za pomoc, teraz działa jak powinno =] Temat zamykam |
|
« 1 » |