Handling exceptions/errors

Handling exceptions/errors

v.krastev avatar v.krastev 58 Точки

Handling exceptions/errors

става дума за задача 7 от домашното (от втората лекция, не от упражненията)

string original - текстът, първоначално въведен от конзолата.

string whatToReplace - това, което ще замествам

string replacement - това, което ще слагам вместо заместеното

използвам

original.replace(original.find(whatToReplace), whatToReplace.size(), replacement);

и тук се появяват двата проблема:

1 - ako whatToReplace НЕ присъства в original, хвърля грешка

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

как се справям с този проблем?

2 - дори и да открия как реално да приложа try and catch блокове (прдполагам че това трябва), как после това цялото да го имплементирам във while цикъл (.find() намира само индекса на първото срещане, нататък се предполага че трябва да има още)

рових доста в интернет, пробвах различни неща, но явно ако някой не го обясни, няма да стане. благодаря предварително!

Тагове:
0
C++ Programming
IvanMitkov avatar IvanMitkov 18 Точки

http://www.cplusplus.com/reference/string/string/find/

The position of the first character of the first match.
If no matches were found, the function returns string::npos.

Ако не намери нещо find връща string::npos.  Т.е. заместваш само ако find не е върнал npos.

0
v.krastev avatar v.krastev 58 Точки

да, първо, благодаря за бързия отговор.

на ръба съм бил през цялто време, на n-тото прочитане на страничката дето и ти прати се сетих какво ми убягваше. :D

поздрави!

0