|
2 / 2 / 1
Регистрация: 04.03.2009
Сообщений: 30
|
||||||
Удаление лишних пробелов в начале и конце строки.04.03.2009, 13:31. Показов 15423. Ответов 28
Метки нет (Все метки)
Нужно написать функцию char*alltrim(char*string) для удаления пробелов в начале и конце строки с помощью указателей. Помогите завершить задачку.
Возник ряд вопросов: 1) как создать какую-то произвольную переменную типа char ( у меня это p)и записать туда из строки string подстроку начиная с определённого элемента заканчивая другим элементом с помощью указателей? Надо ли в конце этой строки p записать NULL? 2)Как потом эту произвольную переменную ( у меня это p) вернуть как результат работы функции заместо переменной string? 3) Как вобще правильно описать переменную размер которой неизвестен? Вот чего получилось добится:
0
|
||||||
| 04.03.2009, 13:31 | |
|
Ответы с готовыми решениями:
28
Удаление лишних пробелов в конце строки Удаление пробелов в начале и конце
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
||||||||||
| 14.08.2009, 01:40 | ||||||||||
char* p = new char[100]; strcpy(p, " 123 "); p = trunc_str(p); delete [] p; ...
а теперь - правильный вариант (:
1
|
||||||||||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
||
| 14.08.2009, 11:45 | ||
1) Если уже хочется скорости - то писать надо сразу trim двойной - слева и справа. 2) tcslen() вызывать два раза совершенно не нужно. Собственно не нужно вызывать ни одного раза. 3) В условии просили удалить только пробелы. 4) TCHAR - это круто, но насчет Unicode опять же никто не говорил. 5) istspace(), tcsspn() - тоже не нужно вызывать. А вот memmove() похоже пригодится - возможно будет быстрее, чем без него.
0
|
||
|
|
||||||
| 14.08.2009, 12:46 | ||||||
|
Выкладываю то что у меня получилось...
Исходный текст содержится в текстовике, подстрока находится между словами в тексте begin и end. Если этих слов в текстовике нето, то подстрока не извлекается. Привожу также результат работы и текстовики (их названия говорят сами за себя)
0
|
||||||
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|||
| 14.08.2009, 14:31 | |||
|
odip,
А вот кстати не очень правильный. 1) Если уже хочется скорости - то писать надо сразу trim двойной - слева и справа. А кто сказал что я хочу скорости? Для меня на первом месте - стабильность. А скорости я захочу тогда, когда профайлер покажет что это самое тормозное место в программе. 2) tcslen() вызывать два раза совершенно не нужно. Собственно не нужно вызывать ни одного раза. попробуй как нибудь переместить область памяти, не зная её размера ![]() 3) В условии просили удалить только пробелы. в том и фишка, только пробелы, или ещё табы etc - код не меняется. так зачем выкладывать недоделанную кривульку, если можно сдлелать как надо (Ж 4) TCHAR - это круто, но насчет Unicode опять же никто не говорил. см. выше. 5) istspace(), tcsspn() - тоже не нужно вызывать. а что нужно вызывать? PS. И вот еще - если ты возьмешь на вооружение хотя бы эти два правила, многое откровется для тебя с совершенно новой стороны (((((((:
0
|
|||
|
Модератор
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
|
|||||||
| 14.08.2009, 16:11 | |||||||
0
|
|||||||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|||||
| 14.08.2009, 16:29 | |||||
Насколько помню макрос этот разворачивается в обращение к массиву, что работает быстрее чем два сравнения. Хотя еще раз повторю: в исходном условии идет речь о пробелах. Добавлено через 10 минут 29 секунд
Книжка называется типа "Написание надежных программ". Книжке лет 40, но она до сих пор актуальна. Добавлено через 1 минуту 36 секунд
то ты должен найти второй конец в любом случае - чтобы открутить пробелы справа от конца. А раз ты нашел конец строки - ты знаешь длину строки. Нет большой необходимости считать длину. Добавлено через 1 минуту 33 секунды
А вот tcsspn() думаю сильно тормознутая функция.
0
|
|||||
|
28 / 28 / 6
Регистрация: 01.07.2009
Сообщений: 58
|
||||||
| 14.08.2009, 19:28 | ||||||
0
|
||||||
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 15.08.2009, 01:34 | |
|
odip,
Ладно - isspace() можно вызывать. мая имеет благодарить, насяльника! (D Это ты случайно не Маерса тут цитируешь ? http://msdn.microsoft.com/ru-r... 63518.aspx но ты должен найти второй конец в любом случае и как же мне это сделать? А вот tcsspn() думаю сильно тормознутая функция. think different
0
|
|
|
alter-sl
|
||
| 30.03.2010, 16:51 | ||
|
|
||
| 30.03.2010, 16:51 | |
|
Удаление лишних пробелов в середине строки Удаление лишних пустых строк и пробелов на конце строки Удаление пробелов в начале и в конце строки Удаление пробелов в конце и начале списка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|