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

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

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

C++ Как разбить строку на вектор из строк?
C++ Как считать строку и разбить ее на слова?
C++ Как разбить строку в МFC?
Как разбить строку C++
C++ Подскажите как разбить строку на массив слов разделителем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
08.05.2011, 00:17     Как разбить строку по нескольким делиметрам #2
В этом посте я использую алгоритм выделения слов из строки для сравнения:
Поиск минимального слова
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
08.05.2011, 01:13     Как разбить строку по нескольким делиметрам #5
Не забивай голову, реализовано так просто. NULL значит NULL.
vvsh
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 143
08.05.2011, 04:01  [ТС]     Как разбить строку по нескольким делиметрам #6
оно наверн запоминает в первый раз строку..
kazak
 Аватар для kazak
3029 / 2350 / 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
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
08.05.2011, 14:40     Как разбить строку по нескольким делиметрам #10
Цитата Сообщение от fantomart Посмотреть сообщение
я вот так выделял:
Зачем придумывать велосипеды, если все уже давно реализовано ?
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
08.05.2011, 14:44     Как разбить строку по нескольким делиметрам #11
не знаю, мне так делать было легче, да и универе нас по строкам особо не задрачивали, и велосипеды мы изобретали сами
olleg90
 Аватар для 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     Как разбить строку по нескольким делиметрам
Еще ссылки по теме:

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

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

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

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