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

Modyfikowanie tekstu i sprawdzanie jego długości

Ostatnio zmodyfikowano 2012-12-01 18:41
Autor Wiadomość
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?
C/C++
#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;
}

P-70212
Mrovqa
» 2012-12-01 16:32:04
Spróbuj przedebuggować kod instrukcja po instrukcji.
P-70214
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:
C/C++
std::cout << konwertuj( tekst ) << std::endl;
na:
C/C++
tekst = konwertuj( tekst );
std::cout << tekst << std::endl;
Wszystko powinno działać jak chcesz.
P-70215
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
P-70222
« 1 »
  Strona 1 z 1