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

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

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

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

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

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

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

Разделить строку на две подстроки. - C++
Доброго времени суток.. В задании необходимо разбить исходную строку на две подстроки, при этом первая длиной k символов (если на k-ю...

Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. - C++
#include <stdio.h> int count_of_substrings(string s, string s1){ int start = 0; int count = 0; int pos = 0; ...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
07.07.2012, 14:03 #2
SUBSTR смотрите http://www.cplusplus.com/reference/s...string/substr/

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


olegod, возможно strtok подойдет : http://www.cplusplus.com/reference/c...string/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
855 / 753 / 71
Регистрация: 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/94848d...29c71e54e084bd
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
855 / 753 / 71
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2012, 21:40
Привет! Вот еще темы с ответами:

Как разделить строку на слова? - C++
Помогите написать функцию для разбиения передаваемой строки на слова. Например дана строка: &quot;This is text, and it is black.&quot;. И нужно...

Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор - C++
Нужно разбить минимальную строку на &quot;связные&quot; подстроки Например: строка Mas: &quot;qwe&quot; нужны подстроки: &quot;q&quot;,&quot;w&quot;,&quot;e&quot;,&quot;qw&quot;,&quot;we&quot;,&quot;qwe&quot;....

Файл: Как наиболее эффективно разделить строку? - C++
В файле есть например: James 0.8 0.7 0.75 0.5 0.85 J Как наиболее эффективно разделить эту строку, поместить James и J в двумерный char...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.07.2012, 21:40
Ответ Создать тему
Опции темы

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