Rozdział 28 Zadanie domowe Błąd aplikacji
Ostatnio zmodyfikowano 2017-05-16 15:12
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. #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; }
|
|
Anim |
» 2017-05-16 15:11:15 Źle korzystasz ze string::npos Zauważ, co zwraca poniższy kod: #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 ? :) |
|
karambaHZP |
» 2017-05-16 15:12:44 |
|
« 1 » |