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

Не работает функция, которая делит строку по разделителю - C++

Восстановить пароль Регистрация
 
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
16.01.2014, 11:03     Не работает функция, которая делит строку по разделителю #1
Функция разделяет строку string str на части, каждая часть ограничена разделителем string razdelitel, результат записывается в массив result_mass[200]

1) она не работает если разделитель не писать текстом "1234", а передавать через переменную
то есть если массив razdelitel_ch заменить на "1234" (то есть записать текстом), то все работает, а мой пример нет

2) даже если писать разделитель текстом, то функция работает с ошибкой, она разделяет строку даже когда встретит какой то один символ из тех что входят в разделитель, а нужно делить только когда встречаются все символы которые входят в разделитель.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void explode2(string str, string razdelitel, string result_mass[200]){
    int i=0;
    for (i=0; i<sizeof(result_mass); i++){result_mass[i]="";}
 
    char buff[65535];
    char razdelitel_ch[5];
 
    strcpy(buff,str.c_str());  //присвоение string в char
    strcpy(razdelitel_ch,razdelitel.c_str());  //присвоение string в char
 
    
    int q = -1;
    char * p = strtok(buff,razdelitel_ch);    //разбитие на лексемы
    while (p!=0){                    //проверка
        ++q;
        result_mass[q] = p;        //присвоение в массив новой лексемы до разделителя
        p = strtok(NULL,razdelitel_ch);       //переход к следующей
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 11:03     Не работает функция, которая делит строку по разделителю
Посмотрите здесь:

Функция, которая копирует строку в другую строку заданное количество раз C++
функция Reverse которая паспологает строку в обратном положении-никакого результата C++
C++ Функция которая располагает строку в обратном порядке
Почему strtok неправильно делит строку C++
Программа считывает строку, делит ее на слова и выводит в порядке убывания длины слов (Ох,функции.Где ошибка?) C++
C++ Как работает функция, которая переворачивает строку?
Функция, которая преобразует строку шестнадцатеричных цифр C++
C++ Функция, которая переворачивает строку
Функция, которая на вход принимает строку и в качестве результата возвращает ее копию C++
Как проще всего разбить строку на ряд строк по разделителю? C++
Функция, которая приводит строку к верхнему регистру C++
Не могу разбить строку по разделителю C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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