| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > trim для wstring или string |
| Автор: ksili 26.1.2009, 12:29 |
| Надо в строке типа wstring или string обрезать с конца непечатные символы и пробелы. Типа метода Trim для AnsiString. В MSDN ничего такого не нашёл. |
| Автор: andrew_121 26.1.2009, 12:36 |
| ksili, Такого метода нет. Используй std::find() и std::copy(). P.S. А что такое AnsiString? |
| Автор: mes 26.1.2009, 12:38 |
| http://www.boost.org/doc/libs/1_37_0/doc/html/string_algo/usage.html#id3677329 Добавлено через 1 минуту и 21 секунду это борландский тип строки, пришедший в с++ с дельфи. |
| Автор: andrew_121 26.1.2009, 12:44 |
| mes, Приведенная Вами ссылка, это часть boost(а), а он не является пока что стандартом. имхо. |
| Автор: ksili 26.1.2009, 12:48 | ||
Чтобы подключить boost, я прописал:
как показано по ссылке Но boost не появился. Что ещё надо сделать? Добавлено через 5 минут и 21 секунду Т.е. не найден файл <boost/algorithm/string.hpp> |
| Автор: mes 26.1.2009, 12:54 |
| http://bionica.wikidot.com/bionica:boost http://www.google.com/search?hl=ru&q=%F3%F1%F2%E0%ED%EE%E2%E8%F2%FC+boost&btnG=%CF%EE%E8%F1%EA+%E2+Google&lr= |
| Автор: ksili 26.1.2009, 12:54 |
| Пишу в 2005 студии |
| Автор: vinter 26.1.2009, 12:54 |
| ksili, скачать его |
| Автор: ksili 26.1.2009, 13:02 |
| понятно, буду качать |
| Автор: andrew_121 26.1.2009, 13:35 |
| ksili, Капец |
| Автор: bsa 26.1.2009, 15:09 | ||
ksili, а сам не можешь написать эту функцию?
|
| Автор: Lazin 26.1.2009, 15:19 | ||
а это очень удобно, так-как за несколькими ф-ями понадобится еще несколько, потом понадобится работать с потоками, потом с еще что-нибудь... если подключить один заголовочный файл, скажем boost/algorithm/string.hpp, то он не потянет весь буст, а только то что нужно и не больше, собирать в данном случае ничего не нужно, только директории настроить я думаю что может, но зачем заниматься изобретением(и сопровождением) велосипеда, вместо того что-бы решать задачу? |
| Автор: bsa 26.1.2009, 15:39 |
| Вообще-то, установка буста занимает пол дня, особенно, когда делаешь это впервые. |
| Автор: mrbrooks 26.1.2009, 15:50 | ||
хм. у меня за час студия буст собрала |
| Автор: vinter 26.1.2009, 16:05 | ||
у меня 30 минут ушло, ниче не коиплили, ниче не собирал. Скачал установщик, прописал пути и все. |
| Автор: Lazin 26.1.2009, 16:06 | ||
stirng algo - это header only библиотека, ее собирать не нужно |
| Автор: andrew_121 26.1.2009, 17:58 |
Спасибо!!! Учту. |
| Автор: Vyacheslav 26.1.2009, 19:17 | ||
| Любопытно, а могут ли сегодня обойтись без boost? Похоже пора менять приоритеты при проведении интервью. Если раньше знание и применение boost было признаком высокой квалификации, то в настоящее время - это может оказаться признаком неумения программировать
|
| Автор: vinter 26.1.2009, 20:48 |
| Vyacheslav, какой смысл вечно писать велосипеды? |
| Автор: Rififi 26.1.2009, 20:56 |
| Vyacheslav, зубы можно и пальцем почистить, но удобнее это делать зубной щеткой. |
| Автор: andrew_121 26.1.2009, 22:34 |
| vinter, Rififi, Ну вы и критики парни ))) Просто таким макаром, скоро может оказаться, что алгоритмы забудутся вопще... А если учесть что, это весьма примитивный алгоритмик, то неумение реализовать его, постыдно. имхо. Хотя...все относительно |
| Автор: mes 26.1.2009, 22:50 | ||
ну у std::max() тоже примитивный алгоритм, однако предпочтительнее использовать его, а не условие И дело в общем то не в умении применять алгоритм, а в удобстве чтения , точнее сказать в удобстве сопровождения кода. Чем меньше будет нагрузка на мозги, тем полноценее будет отдача проекту в решении требуемой задачи. А для того чтоб знать и разбираться в алгоритмах, не надо их впихивать в прогу направо и налево. |
| Автор: andrew_121 26.1.2009, 23:05 |
| Опять риторика... |
| Автор: vinter 27.1.2009, 06:11 |
| andrew_121, никаких риторик, надо решать конкретную задачу. Если эта задача состоит в написании своей версии, значит не юзаем буст. Если нет, то юзаем и не отвлекаемся на написание всего подряд. |
| Автор: ksili 27.1.2009, 06:31 | ||||||||
bsa, до такого кода я бы догадался, но
Добавлено @ 06:45 Всех непечатных символов не знаю (в этом собственно главная проблема и была)., поэтому сделал пока так:
|
| Автор: ksili 27.1.2009, 06:58 |
| Всем спасибо! |
| Автор: Vyacheslav 27.1.2009, 12:44 | ||||||||
Ну, во-первых, Вы переоцениваете сложность задачи. Это явно не велосипед Во-вторых, в серьезных проектах выполняемых для серьезных заказчиков и поставляемых в виде кода стараются ограничить применение сторонних библиотек свыше необходимого: стандарт + требуемые библиотеки. В одном из проектов кросформенного приложения( Linuх, Windows ) заказчик не разрешил поменять STL Dinkumware на STLport, несмотря на то, что вариант STL Dinkumware, поставляемый в составе VC6, на Windows приводил к утечке памяти из-за ошибки в библиотеке . Подчеркну: к утечке памяти только на платформе Windows. Пришлось заменять код на более неуклюжий, но не приводящий к утечке и при использовании STL Dinkumware Вот я и представляю диалог: П( программист) З(заказчик) П: Вы бы не могли заэпрувить нам требования заново. У нас изменения З: А что такое? П: Нам необходимо использовать boost З: А чем вызвана эта необходимость? П: Мне из него нужна функция по отсечению пробелов в строках :( З: Это элементарная задача, и если для решения таких задач программист будет каждый раз подтягивать в приложение boost, хотя использование его не планировалось, то боюсь наступит время, когда перед очередной элементарной задачей он спасует. Boost'а на все элементарные задачи может не хватить А задача была элементарной
Полагаю, что если Вы окажитесь в положении, когда зубной щетки не окажется, то Вы так и будете ходить с нечищеными зубами. Добавлено @ 12:56
в std входит шаблонный вариант функции, учитывающий локаль
|
| Автор: vinter 27.1.2009, 12:59 | ||
так то да, просто если нет ограничивающих факторов, то не вижу смысла не использовать буст |
| Автор: cutwater 27.1.2009, 13:07 |
| vinter, а еще можно использовать QT ради QString у которого есть метод trim |
| Автор: vinter 27.1.2009, 13:20 |
| cutwater, не путай мягкое с морковкой, boost стандарт де факто, а QT фрейворк, который любят далеко не все. |
| Автор: cutwater 27.1.2009, 13:24 |
| Просто приходим к одному и тому же... только ради 5 строк кода подтягивать ненужные зависимости.. все зависит от проекта и от его дальнейшего развития, требований к проекту. поэтому спорить тут бессмысленно. |
| Автор: vinter 27.1.2009, 13:30 |
| cutwater, что значит ненужные зависимости? "если у вас еще не установлен буст тогда мы идем к вам"©, это должно быть правилом. Буст надо знать, и чем раньше ты начнешь его использовать, тем лучше. |
| Автор: Lazin 27.1.2009, 13:44 | ||||||
это не верно, QString потянет за собой в production кучу всего, как минимум Qt4Core.dll, a boost string_algo это просто набор заголовочных файлов, так-что не нужно путать божий дар с яичницой
|
| Автор: bsa 27.1.2009, 15:55 | ||||||
http://linux.die.net/man/3/isspace Чтобы isspace была видна в неймспейсе std, необходимо подключить заголовочный файл ctype:
|
| Автор: cutwater 27.1.2009, 18:36 | ||
Я буст знаю на достаточном для себя уровне и использую. просто считаю что он нужен там где он нужен. Добавлено через 54 секунды Прошу извинить, о QT пример оказался не совсем уместен. |