Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Ivanius
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 1
#1

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

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

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

разделение строки на слова - C++
нужно разбить строку на слова (си) без использования библиотеки string.h (пользоваться можно только stdio.h) можно использовать...

Разделение строки на слова - C++
Текст в файле содержит числа, которые записаны в восьмеричной системе счисления. Преобразовать эти числа в десятичную систему счисления и...

Символьные строки. Разделение на слова - C++
Помогите написать прогу. Не могу разобраться, какие команды применить. Так же нужно использовать отдельно функцию. В Файле находится...

Разделение строки на отдельные слова [С++] - C++
Надо разделить строку на отдельные слова. Использовать strtok() нельзя.

С++, MFC, разделение строки типа CString на слова - C++
Есть три списка ListBox и одно поле редактирования EditBox. В EditBox вводится информация в формате «Фамилия Имя Отчество». По завершении...

Разделение строки типа String на отдельные слова с разделяющим символом - C++
Подскажите пожалуйста, как строку с n-ым количеством слов разделённых символом точка запятой разделить и поместить предположим в массив

5
mik-a-el
Администратор
68603 / 38473 / 231
Регистрация: 10.04.2006
Сообщений: 12,554
16.03.2007, 14:09 #2
Алгоритм:
1. Запоминаешь позицию символа.
2. Идешь по каждому символу строки, пока не встретишь пробел, точку, запятую или какой другой символ разделитель - это будет конец слова.
3. Берешь подстроку от первой позиции (п.1) до полученной - это будет само слово.
4. Идешь дальше, пока символы-разделители не закончатся. Как закончатся - это начало следующего слова. Далее - п.1 и так до конца строки.
0
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 и т.д, что делать с такими словами?
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,404
30.01.2010, 12:11 #4
Чтобы понять, что с ними делать, надо сначала определить самое главное - а что есть "слово"?

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

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

Насчет кривых входных данных - какие данные такие и результат. От всего перестраховаться не возможно. Это мне напоминает ситуацию написания антимата для чата =)
0
30.01.2010, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2010, 21:10
Привет! Вот еще темы с ответами:

Разделение слова на буквы - C++
Всем доброго времени суток. У меня возник вопрос. Допустим у есть переменная X типа string, в которую записано слово, "Code". Как мне...

Разделение произвольного текста на слова - C++
Пытаюсь разделить произвольный текст на отдельные слова. И присвоить каждое слово элементу структуры. Но когда программа проходит первую...

Токенизация, разделение текста на слова - C++
Здравствуйте, по заданию необходимо 1.Прочитать текст из первого файла. 2.Выделить словоформы и вписать их в отдельный двумерный...

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы - C++
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.