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

Rozdział 28 Zadanie domowe

Ostatnio zmodyfikowano 2015-12-01 22:39
Autor Wiadomość
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?
C/C++
#include <iostream>
#include <string>
using namespace std;

string konwertuj( std::string & sTekst )
{
    string sWynik = sTekst;
   
   
    size_t pozycja_zmiany = sWynik.find( "<b>" );
    do { //szuka i zamienia <b>
        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 { //szuka i zamienia </b>
        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 { //szuka i usuwa "  "
        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;
}
P-141240
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).
C/C++
pozycja_zmiany3 = sWynik.find( "  ", pozycja_zmiany3 ); // szukasz podwojnej spacji, jak znajdzie usuwa pierwsza
// i jesli za usuwanym zniakiem sa dwie spacje to od razu je zlapie
// jesli nie ma juz wiecej to po usunieciu jednej z dwoch poleci dalej szukac podwojnych
 
P-141249
Matis28
Temat założony przez niniejszego użytkownika
» 2015-12-01 22:39:10
Dziękuję za pomoc :)
P-141255
« 1 »
  Strona 1 z 1