Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 73, средняя оценка - 4.99
Ivanius
Сообщений: n/a
#1

Разделение строки на слова - C++

16.03.2007, 14:02. Просмотров 8885. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста, как разделить строку на отдельные слова. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2007, 14:02     Разделение строки на слова
Посмотрите здесь:

C++ разделение строки на слова
C++ Разделение строки на отдельные слова [С++]
Разделение слова на буквы C++
С++, MFC, разделение строки типа CString на слова C++
C++ Разделение произвольного текста на слова
C++ Разделение строки
C++ Токенизация, разделение текста на слова
C++ Символьные строки. Разделение на слова
C++ Разделение строки
Разделение строки пробелами C++
Разделение строки типа String на отдельные слова с разделяющим символом C++
Разделение строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mik-a-el
CyberForum Owner
 Аватар для mik-a-el
56602 / 36352 / 231
Регистрация: 10.04.2006
Сообщений: 12,617
16.03.2007, 14:09     Разделение строки на слова #2
Алгоритм:
1. Запоминаешь позицию символа.
2. Идешь по каждому символу строки, пока не встретишь пробел, точку, запятую или какой другой символ разделитель - это будет конец слова.
3. Берешь подстроку от первой позиции (п.1) до полученной - это будет само слово.
4. Идешь дальше, пока символы-разделители не закончатся. Как закончатся - это начало следующего слова. Далее - п.1 и так до конца строки.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
30.01.2010, 10:33     Разделение строки на слова #3
Цитата Сообщение от mik-a-el Посмотреть сообщение
Алгоритм:
1. Запоминаешь позицию символа.
2. Идешь по каждому символу строки, пока не встретишь пробел, точку, запятую или какой другой символ разделитель - это будет конец слова.
3. Берешь подстроку от первой позиции (п.1) до полученной - это будет само слово.
4. Идешь дальше, пока символы-разделители не закончатся. Как закончатся - это начало следующего слова. Далее - п.1 и так до конца строки.
Это всё конечно ясно, но как поступать со словами типа u.s.a или J.W. Harisson, после преведеного выше алгоритма мы получим совсем неправильные слова типа u s a и т.д, что делать с такими словами?
CheshireCat
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
30.01.2010, 12:11     Разделение строки на слова #4
Чтобы понять, что с ними делать, надо сначала определить самое главное - а что есть "слово"?

Если "словом" считается любая последовательность символов, ограниченная с двух сторон (началом/концом строки либо любыми из набора символов-разделителей), то предложенный mik-a-el алгоритм абсолютно правильный.
В противном случае, приводи детальное определение понятия "слово".
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
30.01.2010, 13:22     Разделение строки на слова #5
Цитата Сообщение от CheshireCat Посмотреть сообщение
Чтобы понять, что с ними делать, надо сначала определить самое главное - а что есть "слово"?

Если "словом" считается любая последовательность символов, ограниченная с двух сторон (началом/концом строки либо любыми из набора символов-разделителей), то предложенный mik-a-el алгоритм абсолютно правильный.
В противном случае, приводи детальное определение понятия "слово".
Я имею ввиду произвольный текст, который может быть и последовательностью ограниченной пробелами, точками, запятыми и словом может быть инициалы или аббревиатуры, например u.s.a, тогда как в таком случае поступать? у мя есть некоторое решение, но для этого надо считывать слова посимвольно причем считывать надо сразу 3 символа(чтобы определить это аббревиатура или просто разделитель), я хочу узнать можно как-то по рациональнее это сделать?
insideone
Модератор
Автор FAQ
 Аватар для insideone
3634 / 912 / 48
Регистрация: 10.01.2010
Сообщений: 2,457
30.01.2010, 21:10     Разделение строки на слова #6
Если аббревиатуры то что мешает сделать проверку по виду "Если буква заглавная то знак точки после неё не считать разрывом между словами". На деле это можно реализовать дополнительным флагом "bSkip". Ну примерно так...

Насчет кривых входных данных - какие данные такие и результат. От всего перестраховаться не возможно. Это мне напоминает ситуацию написания антимата для чата =)
Yandex
Объявления
30.01.2010, 21:10     Разделение строки на слова
Ответ Создать тему
Опции темы

Текущее время: 20:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru