Loading...
v.krastev avatar v.krastev 54 Точки

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 20 Точки

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 54 Точки

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

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

поздрави!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.