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

Rozdział 28 Zadanie domowe Błąd aplikacji

Ostatnio zmodyfikowano 2017-05-16 15:12
Autor Wiadomość
Halt55
Temat założony przez niniejszego użytkownika
Rozdział 28 Zadanie domowe Błąd aplikacji
» 2017-05-16 14:39:39
Witam!
Mam problem z zadaniem domowym. Po uruchomieniu aplikacji pojawia się tekst:

terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::erase: __pos (which is 18446744073709551615) > this->size() (which is 45)

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


C/C++
#include<iostream>
#include<string>
using namespace std;

string konwertuj( string & t )
{
    size_t pozycja = 0;
   
    while( pozycja != string::npos )
    {
        pozycja = t.find( "<" );
        t.erase( pozycja, 1 );
        t.insert( pozycja, "[" );
       
    }
    while( pozycja != string::npos )
    {
        pozycja = t.find( ">" );
        t.erase( pozycja, 1 );
        t.insert( pozycja, "]" );
    }
   
    while( pozycja != string::npos )
    {
        pozycja = t.find( "  " );
        t.erase( pozycja, 1 );
       
    }
    return t;
}
int main()
{
    string tekst = "<b>to jest </b> testowy       napis     <b>:)";
    cout << konwertuj( tekst ) << endl;
   
    return 0;
}

P-161197
Anim
» 2017-05-16 15:11:15
Źle korzystasz ze string::npos

Zauważ, co zwraca poniższy kod:

C/C++
#include<iostream>
#include<string>
using namespace std;

string konwertuj( string & t )
{
    cout << string::npos << endl;
   
    return t;
}
int main()
{
    string tekst = "<b>to jest </b> testowy       napis     <b>:)";
    konwertuj( tekst );
   
    return 0;
}

Czy nie dokładnie ten śmieć, o którym Ci kompilator zwraca informację dotyczącą przekroczenia zakresu ? :)
P-161198
karambaHZP
» 2017-05-16 15:12:44
erase romove idiom
Szukałbym znaku do podmiany jak w zwykłej tablicy lub skorzystał z metody string::replace.
P-161199
« 1 »
  Strona 1 z 1