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

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

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

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

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

есть строка
C++
1
char *a = "123497, 56783; 09872!, 65443; ;221345, 623789 ";
разделители
C++
1
char keys[15] = ", !;.";
нужно выделить слова
как проще сделать?
есть функция strcspn которая ищет любой символ и строки keys например. но разделителей подряд может быть сколько угодно, что с этим делать?
заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
08.05.2011, 00:17     Как разбить строку по нескольким делиметрам #2
В этом посте я использую алгоритм выделения слов из строки для сравнения:
Поиск минимального слова
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
08.05.2011, 00:26     Как разбить строку по нескольким делиметрам #3
vvsh, strtok()
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?
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,437
08.05.2011, 01:13     Как разбить строку по нескольким делиметрам #5
Не забивай голову, реализовано так просто. NULL значит NULL.
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
08.05.2011, 04:01  [ТС]     Как разбить строку по нескольким делиметрам #6
оно наверн запоминает в первый раз строку..
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
08.05.2011, 04:41     Как разбить строку по нескольким делиметрам #7
NULL в данном случае говорит функции о том, что она должна продолжить обработку предыдущей строки.
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
08.05.2011, 13:34  [ТС]     Как разбить строку по нескольким делиметрам #8
то есть в первый раз запомнила и если не передавать будет опять же ее брать. тогда понятно.
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 после слова}
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
08.05.2011, 14:40     Как разбить строку по нескольким делиметрам #10
Цитата Сообщение от fantomart Посмотреть сообщение
я вот так выделял:
Зачем придумывать велосипеды, если все уже давно реализовано ?
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
08.05.2011, 14:44     Как разбить строку по нескольким делиметрам #11
не знаю, мне так делать было легче, да и универе нас по строкам особо не задрачивали, и велосипеды мы изобретали сами
olleg90
34 / 34 / 6
Регистрация: 06.01.2011
Сообщений: 90
09.05.2011, 12:33     Как разбить строку по нескольким делиметрам #12
Цитата Сообщение от fantomart Посмотреть сообщение
я вот так выделял:
эмммм... не совсем ты )))
http://www.cyberforum.ru/cpp-beginne...ead224862.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2011, 13:19     Как разбить строку по нескольким делиметрам
Еще ссылки по теме:
Strtok как разбить строку пополам по первому пробелу? C++
C++ Подскажите как разбить строку на массив слов разделителем
Подскажите пожалуйста как разбить строку на массив слов? C++
Как проще всего разбить строку на ряд строк по разделителю? C++
C++ Посмотрите код! (используя функцию strtok, разбить телефонный номер формата (555) 555-5555, введенный как строку, на лексемы)

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

Или воспользуйтесь поиском по форуму:
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
09.05.2011, 13:19     Как разбить строку по нескольким делиметрам #13
я не сказал что придумал я, я сказал что я так выделял
Yandex
Объявления
09.05.2011, 13:19     Как разбить строку по нескольким делиметрам
Ответ Создать тему
Опции темы

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