Rozdział 28 Zadanie domowe
Ostatnio zmodyfikowano 2015-12-01 22:39
Matis28 Temat założony przez niniejszego użytkownika |
Rozdział 28 Zadanie domowe » 2015-12-01 19:51:16 Cześć! Chciałem zapytać dlaczego mój kod pozostawia 2 spacje w tekście "<b>to jest </b> testowy napis <b>:)" pomiędzy słowami testowy napis? #include <iostream> #include <string> using namespace std;
string konwertuj( std::string & sTekst ) { string sWynik = sTekst; size_t pozycja_zmiany = sWynik.find( "<b>" ); do { if( pozycja_zmiany == string::npos ) { sWynik.erase( pozycja_zmiany, 3 ); sWynik.insert( pozycja_zmiany, "[b]" ); pozycja_zmiany = sWynik.find( "<b>", pozycja_zmiany + 3 ); } else break; } while( sWynik.find( "<b>" ) != string::npos ); size_t pozycja_zmiany2 = sWynik.find( "</b>" ); do { if( pozycja_zmiany2 != string::npos ) { sWynik.erase( pozycja_zmiany2, 4 ); sWynik.insert( pozycja_zmiany2, "[/b]" ); pozycja_zmiany2 = sWynik.find( "</b>", pozycja_zmiany2 + 4 ); } else break; } while( sWynik.find( "</b>" ) != string::npos ); size_t pozycja_zmiany3 = sWynik.find( " " ); do { if( pozycja_zmiany3 != string::npos ) { sWynik.erase( pozycja_zmiany3, 2 ); pozycja_zmiany3 = sWynik.find( " ", pozycja_zmiany3 + 1 ); } else break; } while( sWynik.find( " " ) != string::npos ); return sWynik; }
int main() { string tekst = "<b>to jest </b> testowy napis <b>:)"; cout << konwertuj( tekst ) << endl; system( "pause" ); return 0; } |
|
carlosmay |
» 2015-12-01 21:36:37 Wygląda, że szukasz podwójnej spacji. Jeśli tak to kolejnej szukaj od znalezionej pozycji ( bez dodawania do znalezionej pozycji 1). pozycja_zmiany3 = sWynik.find( " ", pozycja_zmiany3 );
|
|
Matis28 Temat założony przez niniejszego użytkownika |
» 2015-12-01 22:39:10 Dziękuję za pomoc :) |
|
« 1 » |