Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
olegod
0 / 0 / 0
Регистрация: 04.05.2011
Сообщений: 113
1

Как разделить строку на подстроки

07.07.2012, 12:41. Просмотров 651. Ответов 6
Метки нет (Все метки)

Здравствуйте, возник вопрос по парсингу строк в c++... Как разделить строку на подстроки по ид ? При этом элементов должно быть только два, то есть если ид встречается более одного раза то остальные не должны никак влиять, альтернатива функции php -
PHP
1
explode(id, string, 2)
Заранее огромное спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2012, 12:41
Ответы с готовыми решениями:

Не могу разделить строку на подстроки
Видимо я совсем дебил, но я не понимаю в чем проблема и почему не работает. Числовое выражение...

Разделить строку на две подстроки.
Доброго времени суток.. В задании необходимо разбить исходную строку на две подстроки, при этом...

Как подсчитать количество вхождений подстроки в строку
Добрый вечер! Как можно подсчитать количество вхождений строки S2 в строку S1? Допустим: S1=...

Как узнать индекс вхождения подстроки в строку?
Как задать шаблон строки? Объясню на примере: мне надо узнать индекс подстроки в строке,...

Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор
Нужно разбить минимальную строку на "связные" подстроки Например: строка Mas: "qwe" нужны...

6
MrCold
862 / 760 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
07.07.2012, 14:03 2
SUBSTR смотрите http://www.cplusplus.com/reference/string/string/substr/

но это немного другое : explode вернет массив строк
а substr одну подстроку


olegod, возможно strtok подойдет : http://www.cplusplus.com/reference/clibrary/cstring/strtok/

режем от первой запятой до точки

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cstring>
 
int main ( )
 
{
 
    char str[ 100 ] = " by the function, and, the beginning, of the, token.";
 
    char str2[ 100 ];
 
    char *token = NULL;
 
    int i = 0;
 
    token = strtok ( str, ",");
 
    while ( token )
    {
              strcpy ( str2, token );
 
        token = strtok ( NULL, ".");
    }
 
    std::cout << "String :" <<  str << '\n' <<  "Substring :" << str2 << '\n';
 
    system ( "pause" );
 
    return 0;
}
1
olegod
0 / 0 / 0
Регистрация: 04.05.2011
Сообщений: 113
07.07.2012, 17:17  [ТС] 3
Сейчас нет возможности протестировать... Вот например у нас строка "df,kf,sf,sd,mc,vb", вызываю так:
C++
1
dr = strtok( str, ",");
При первом вызове она вернёт df, при втором kf и т.д. ?
0
MrCold
862 / 760 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
07.07.2012, 17:45 4
olegod, тогда режьте по концу строки

C++
1
2
3
4
5
6
7
token = strtok ( str, ",");
 while ( token )
    {
              strcpy ( str2, token );
 
        token = strtok ( NULL, "\0");
    }
http://liveworkspace.org/code/94848df304c71bc34829c71e54e084bd
0
olegod
0 / 0 / 0
Регистрация: 04.05.2011
Сообщений: 113
07.07.2012, 17:59  [ТС] 5
Извините, я вас не понял, зачем там конец строки? Если можно, поясните... Мой пример заработал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main ( )
{
char str2[100];
char *token;
char str[] = "df,kf,sf,sd,mc,vb";
token = strtok ( str, ",");
while (token != NULL)
    {
              strcpy ( str2, token );
 
        token = strtok ( NULL, ",");
        cout << str2 << endl;
    }
}
Огромное спасибо что помогли разобраться...
0
MrCold
862 / 760 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
07.07.2012, 18:05 6
Цитата Сообщение от olegod Посмотреть сообщение
должно быть только два
Думал вам нужно разделить строку на две по первому разделителю ( , )

Да ладно это уже не важно
0
olegod
0 / 0 / 0
Регистрация: 04.05.2011
Сообщений: 113
07.07.2012, 21:40  [ТС] 7
Ну так и есть, но ведь этот метод подходит и для этого? Кстати, если исполнить это без цикла, например 1 раз, то я получу bf, а как получить оставшуюся часть(несмотря на то что там запятые)?
0
07.07.2012, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2012, 21:40

Как разделить строку на слова?
Как разделить строку на слова? без использования функций

Как разделить строку на слова?
Помогите написать функцию для разбиения передаваемой строки на слова. Например дана строка: &quot;This...

Как разделить строку(аналог функции explode)
Есть строка string в которую записаны данные разделенные специальным разделителем например | Как...


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

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

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