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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
#1

Как разбить строку по нескольким делиметрам - C++

07.05.2011, 23:47. Просмотров 2180. Ответов 12
Метки нет (Все метки)

есть строка
C++
1
char *a = "123497, 56783; 09872!, 65443; ;221345, 623789 ";
разделители
C++
1
char keys[15] = ", !;.";
нужно выделить слова
как проще сделать?
есть функция strcspn которая ищет любой символ и строки keys например. но разделителей подряд может быть сколько угодно, что с этим делать?
заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 23:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как разбить строку по нескольким делиметрам (C++):

Как разбить строку - C++
Как прочитать такую строку за один раз? Ukraine Kiev Donetsk Odessa и как мне строку разбить на слова и добавить в вектор. ...

Как разбить строку - C++
Здравствуйте! Как извлечь из вводимой строки только символы? К примеру, вводим " asd sss 12", а на выходе получаем asd, sss и 12?...

Как разбить строку на символы? - C++
Кто подскажет начинающему Как разбить строку на символы, имеется ввиду разбить слова на буквы

Как разбить строку в МFC? - C++
Такая ситуация (в продолжении темы о базе(кто читал)) Имеется строка в txt файле с разделителями. Например: ...

Как разбить строку на предложения - C++
Как разбить строку на предложения

Как считать строку и разбить ее на слова? - C++
Задача на С. (стандарт) Необходимо считать строку и разбить ее на слова (слова разделены пробелами (не меннее одного)). Количество слов и...

12
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
08.05.2011, 00:17 #2
В этом посте я использую алгоритм выделения слов из строки для сравнения:
Поиск минимального слова
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
08.05.2011, 00:26 #3
vvsh, strtok()
0
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
08.05.2011, 00:48  [ТС] #4
Цитата Сообщение от asics Посмотреть сообщение
vvsh, strtok()
даже не знаю о такой функции, спасибо!)

Добавлено через 3 минуты
только вопрос, нашел такой пример
C++
1
2
3
4
5
6
7
8
 char str[] = "now # is the time for all # good men to come to the # aid of their country";
     char delims[] = "#";
     char *result = NULL;
     result = strtok( str, delims );
     while( result != NULL ) {
         printf( "result is \"%s\"\n", result );
         result = strtok( NULL, delims );
     }
вот тут result = strtok( NULL, delims );
почему тут NULL?
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,481
08.05.2011, 01:13 #5
Не забивай голову, реализовано так просто. NULL значит NULL.
0
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
08.05.2011, 04:01  [ТС] #6
оно наверн запоминает в первый раз строку..
0
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
08.05.2011, 04:41 #7
NULL в данном случае говорит функции о том, что она должна продолжить обработку предыдущей строки.
0
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
08.05.2011, 13:34  [ТС] #8
то есть в первый раз запомнила и если не передавать будет опять же ее брать. тогда понятно.
0
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
08.05.2011, 14:28 #9
я вот так выделял:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while(i<n&&gets(text[i])!=NULL&&text[i][0]!='\0')i++;//ввод текста
r=i;//r- кол-во введенных строк
for (i=0;i<r;i++)
 for (j=0;j<strlen(text[i]);j++)
 {
  m=j;//начало слова
  while (strchr(razdel,text[i][j])==NULL&& j<strlen(text[i]))
  {k++;j++;//k - длинна слова
  }
 
  for(q=0,m2=m;m2<j;m2++,q++)
  tmp[q]=text[i][m2];//запись текущего слова
  tmp[q]=NULL;//NULL после слова}
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
08.05.2011, 14:40 #10
Цитата Сообщение от fantomart Посмотреть сообщение
я вот так выделял:
Зачем придумывать велосипеды, если все уже давно реализовано ?
0
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
08.05.2011, 14:44 #11
не знаю, мне так делать было легче, да и универе нас по строкам особо не задрачивали, и велосипеды мы изобретали сами
0
olleg90
34 / 34 / 6
Регистрация: 06.01.2011
Сообщений: 90
09.05.2011, 12:33 #12
Цитата Сообщение от fantomart Посмотреть сообщение
я вот так выделял:
эмммм... не совсем ты )))
http://www.cyberforum.ru/cpp-beginners/thread224862.html
0
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
09.05.2011, 13:19 #13
я не сказал что придумал я, я сказал что я так выделял
0
09.05.2011, 13:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2011, 13:19
Привет! Вот еще темы с ответами:

Как разбить строку на вектор из строк? - C++
Здравствуйте. Хочу написать программу, которая текст преобразует в вектор,каждый элемент которого-отдельное слово. Создаю два объекта...

Strtok как разбить строку пополам по первому пробелу? - C++
Есть вот такая строка: 28 -1.221636 -1.183837 32.839973 0.885457 -0.348518 -0.307412 0.357200 0.834200 Мне нужно заменить первое...

Подскажите как разбить строку на массив слов разделителем - C++
нужно разбить строку на массив строк для дальнейшей обработки, подскажите пожалуйста кто знает, как это сделать?

Подскажите пожалуйста как разбить строку на массив слов? - C++
Надо разбить строку на массив строк при помощи разделителя... Какой функцией для этого надо восьпользоваться?


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

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

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