![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Iron Monk, имхо, это код не сильно лучше.
Каждый вызов delete(tmp, 1, 1) приводит к тому, что в памяти выделяется память под новую строку, в созданную строку переписывается текст без удаляемого символа, потом старый tmp удаляется, и в переменную tmp (которая является УКАЗАТЕЛЕМ на строку) переписывается указатель на новую область памяти. Это и есть та самая "bad practice". Если Вам интересно, как написать "good" - то очень рекомендую разобрать алгоритм, предложенный StriderX в пост #2. Обратите внимание, что при переборе строки она НЕ ИЗМЕНЯЕТСЯ (изменяется только счётчик, отсчитывающий, сколько пустых символ в начале строки подлежит удалению). А потом мы сразу возвращаем ПОДСТРОКУ нужной длины (без пустых символов). It's GOOD! ![]() |
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
![]()
Ок, без делита.
Код:
|
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
Copy та же хня.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
![]()
Но копируется только один раз. Идем дальше:
Код:
Код:
Последний раз редактировалось Iron Monk; 03.12.2014 в 22:28. |
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
мне вариант с Copy (пост #13) понравился.
|
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
![]() |
![]() |
![]() |
![]() |
#18 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Выделение памяти под Result и копирование туда подстроки (Copy) произойдёт один раз за вызов функции. Это нормально! |
|
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 05.10.2007
Сообщений: 478
|
![]() |
![]() |
![]() |
![]() |
#20 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отбросить пробелы после числа? | MishkaSh | Помощь студентам | 1 | 04.04.2013 05:52 |
заменить элементы одномерного массива, стоящие перед минимальным - на нули, а стоящие после максимального - на единицы (Паскаль) | Женька Good | Помощь студентам | 2 | 01.12.2011 06:22 |
как заставить VBA не откидывать нули впереди числа | kusyusha | Microsoft Office Word | 3 | 14.11.2010 22:27 |
Дано число. Отбросить в нем все цифры, стоящие левее самой правой единицы. | SkApY | Помощь студентам | 5 | 09.11.2009 20:58 |
как отбросить целую часть оставив дробную | Alex26RusLink | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 24.10.2009 11:36 |