0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 12
|
|
1 | |
Разделить строку типа string на лексемы02.08.2014, 00:51. Показов 13832. Ответов 30
Метки нет (Все метки)
Есть строка string, нужно разбить её на лексемы. У меня не получается использовать strtok с типом string.
0
|
02.08.2014, 00:51 | |
Ответы с готовыми решениями:
30
Как скопировать строку типа std::string в другую строку такого же типа? Разбить строку на лексемы и вывести лексемы в обратном порядке. Перевести строку типа string, в строку типа double Как совместить строку типа String, имеющуюся в коде и функцию, принимающую std::string ? |
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
02.08.2014, 09:37 | 21 | |||||
0
|
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 12
|
||||||
02.08.2014, 14:32 [ТС] | 22 | |||||
0
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
03.08.2014, 13:57 | 23 |
Mr.X, занятный у тебя стиль кодинга
0
|
03.08.2014, 23:45 | 24 | |||||
А что там занятного ? По-моему все стандартно, только возможно стоило typedef-фить от char сразу
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
04.08.2014, 04:46 | 25 |
А что, typedef-ы уже отменили? Вообще-то специалисты советуют именовать типы в контексте решаемой задачи, а не языка программирования, а также писать программу как письмо программисту, а не компьютеру. Ежели уж компьютеру писать, то дурная машина в машинных кодах, пожалуй, лучше поймет.
Неужели вы правда считаете, что запись std::vector<std::string> vs нагляднее, чем T_strings tokens? Кстати, что это за имя переменной такое, "vs"? Это вы так буквы экономите? Ну, тогда две буквы на имя - это явное расточительство, одной вполне было бы достаточно. Ну, а если серьезно, то те же специалисты советуют делать имена говорящими и самодокументируемыми. Обычно люди, именующие переменные буквами, тогда уж рядом пишут в комментарии что эти буквы означают. Хотя почему именно это нельзя им в имени написать - тайна сия велика есть.
0
|
04.08.2014, 12:07 | 26 |
В том то и дело что если обобщать то уже предусмотреть "легкое" переключение от char / wchar_t, но это естественно просто мое примечание.
А как она может быть вообще наглядной, если пример учебно-демонстрационный и оно ничего несет по смыслу кроме того что это вектор строк потому и vs, или
говорит больше ? По-моему только вам известно что означает префикс T_ в именовании. А что объявления не достаточно длинные ? а итераторов итп... Я не вижу смысла делать "длинные" названия в локальных местах где всего оперируют одна-две переменные и тем более если это только пример и нет смысловой нагрузки.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
04.08.2014, 14:13 | 27 |
В том-то и дело, что typedef-ы - это не обобщение, а конкретизация к контексту текущей задачи.
Ну, задача была разбить строку на лексемы, о чем моя запись T_strings tokens справедливо и указывает, что это контейнер, хранящий эти самые лексемы в виде строк.
А этот префикс я добавляю к именам типов (о чем по моим typedef-ам догадаться совсем несложно). Тогда их уже ни с чем не спутаешь. Странно, что сообщество программистов на C++ давно уже не договорилось о чем-то подобном. Никогда сразу ни у кого не поймешь где имя типа, а где переменной. Ну, вам-то понятно, что vs это вектор строк, но неплохо было бы и читателю программы это написать вместо бессмысленной аббревиатуры. Но это вы опять же только тип зашифровали, а по условию задачи там лексемы лежат, так почему прямо не написать об этом?
0
|
04.08.2014, 14:34 | 28 |
Обобщение в шаблонах, к примеру вы используете конкретный тип std::string и придется весь код переправлять если потребуется переход на wchar_t с char - именно это я имел ввиду, а typedef поможет снизить число правок кода.
Аля делфи? Как по мне, лучше придерживаться более лаконичного стиля - писать классы с большой буквы, переменные/ф-ции с маленькой. Лексемы ? Я не давал пример конкретно под эту задачу, ссылка была на общий пример, а то что там по сути будет это уже другой вопрос. Возможно это будут по сути строки/записи rows/records или ячейки cells это дело конкретной задачи, и вашей фантазии, а парится с тем как именовать переменные в двух строчках кода, не вижу смысла.
0
|
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
|
|
04.08.2014, 20:29 | 29 |
0
|
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
|
|
04.08.2014, 21:05 | 31 |
Avazart, понял, чтобы убрать константность. Но безопасно ли так делать?
0
|
04.08.2014, 21:05 | |
04.08.2014, 21:05 | |
Помогаю со студенческими работами здесь
31
Разделить строку string на подстроки Читать строку типа string из файла, разбить ее на массив слов типа char Как преобразовать число типа int в строку типа string без методов-конвертов на C#? Из элементов массива типа integer в -> строку типа string Как разделить и преобразовать строку из string в int? Разделить символьный массив на лексемы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |