|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.03.2010, 20:08 | #1 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Мучения со строкой
Я уже усилено мусолил эту тему в предыдущем разделе, на там была другая тонкость. Суть заключается в следующем - я хочу вводить несколько слов в ОДНУ строку типа string, да ещё чтобы в этой строке можно было анализировтаь команды.
То есть есть стринговая переменная, и я ввожу в неё команду: возьми гитару или иди на восток И теперь бы неплохо, чтобы моя функция анализа могла находить в этой строке слова "возьми" и "гитара". Функции для работы строк не подходят из-за формата, ну а метод string.compare не желает делать того, чего хочу я. Код:
Вот и склоняюсь перед вашей мудростью в очередной раз: есть ли чистые и элегантные способы вводить и анализировать целую строку? Последний раз редактировалось Кипящий чайник; 07.03.2010 в 20:28. |
07.03.2010, 20:13 | #2 |
Студент 1 курса
Форумчанин Подтвердите свой е-майл
Регистрация: 27.06.2008
Сообщений: 959
|
Считывать целую строку, а не одно слово можно с помощью getline
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
|
07.03.2010, 20:52 | #3 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Как сказали выше, для чтения строки можно использовать функцию std::getline.
Для разбиения строки на слова в стиле cin (istream) можно использовать stringstream. Для поиска подстроки в строке можно использовать метод класса string - find. std::getline std::stringstream std::string Также, если есть желание или необходимость работать с С-ми функциями, то можно получать представление string в виде С-строки. Для этого вызывайте метод c_str() |
07.03.2010, 22:52 | #4 |
Форумчанин
Регистрация: 27.04.2009
Сообщений: 184
|
а тут надо string или wstring ?
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
|
12.03.2010, 06:41 | #5 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Ответ я нашёл, в принципе сам, подумав хорошенько, а потом ещё раза три.
Вот, предположим, введённая строка: "возьми гитару" В слове возьми насчитывается шесть символов. Так вот, пусть функция Analysis при помощи compare сравнит первые шесть символов команды с шестью символами переменной take = "возьми". И если соответствие найдено, но учитываем пробел, и начинаем искать второе слово уже не с восьмого слова таким же образом. Банальная арифметика, но работает. Как вы это находите? Достаточно элегантно? |
12.03.2010, 09:26 | #6 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
А вам, собственнно, обязательно нужно чтобы было "Элегантно"?
А если я скажу, что нет - то что вы будете делать, еще искать пути решения? Я так понимаю код пишется для себя, элегантно или не элегантно тут по крайней мере в быстродействии роли не сыграет, так что по этому поводу лучше не париться...По крайней мере если вас затрудняют такие несложные вопросы
Если я помог вам - порадуйте меня, нажмите на весы слева
|
12.03.2010, 18:27 | #7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
А если я напишу
Код:
Пожалуй, наиболее верным решением будет, всё же, разбивать строку на составляющие, и анализировать их отдельно. |
18.03.2010, 13:17 | #8 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Благослови тебя Бог, сын мой. Мне и правда очень помогла find, описанная в примере. Я немного упростил его - и вуаля! Спасибо!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа со строкой | Андрей.12 | Помощь студентам | 1 | 15.02.2010 09:14 |
Работа со строкой!!! | APTEMUC | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 18.01.2010 00:22 |
Работа со строкой | s2dentishe | Общие вопросы Delphi | 6 | 05.12.2009 15:09 |
работа со строкой. | D_E_N | Общие вопросы Delphi | 4 | 25.10.2009 16:19 |
Программа со строкой. | XaMeJleoH | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 26.05.2009 21:48 |