URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6666
[ Назад ]

Исходное сообщение
"Аналог PHP'шной функции array explode (separator,string  )"

Отправлено tigo , 10-Авг-07 11:24 
Доброго времени суток!

Подскажите, пжалуйста, есть ли Си'шные реализации функции explode, из PHP?

Обьявление из документации по PHP:
_______________________________________________________________
explode
(PHP 3, PHP 4, PHP 5)

explode -- Разбивает строку на подстроки
Описание
array explode ( string separator, string string [, int limit] )


Возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя. Если передан аргумент limit, массив будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string.

Если separator - пустая строка (""), explode() возвращает FALSE. Если separator не содержится в string, то explode() возвращает массив, содержащий один элемент string.

По историческим причинам, функции implode() можно передавать аргументы в любом порядке, но для explode() это недопустимо. separator всегда должен содержать разделитель, а string - исходную строку.

Замечание: Аргумент limit был добавлен в PHP 4.0.1
________________________________________________________________________

Интересует иммено вариант с оганичителем. Если кто нибудь предложит свою реализацию, буду очень благодарен.


Содержание

Сообщения в этом обсуждении
"Аналог PHP'шной функции array explode (separator,string  )"
Отправлено kriogen , 10-Авг-07 12:13 
в бусте есть tokenizer, вот стандартный пример:

   string s = "This is,  a test";
   tokenizer<> tok(s);
   for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
       cout << *beg << "\n";
   }

Результат:
This
is
a
test


"Аналог PHP'шной функции array explode (separator,string  )"
Отправлено tigo , 10-Авг-07 12:25 
>[оверквотинг удален]
>   for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
>       cout << *beg << "\n";
>
>   }
>
>Результат:
>This
>is
>a
>test

А на простом Си? не плюс плюс


"Аналог PHP'шной функции array explode (separator,string  )"
Отправлено phpcoder , 10-Авг-07 12:38 
[...]
>А на простом Си? не плюс плюс

А самому поискать?

man strtok, man strchr



"Аналог PHP'шной функции array explode (separator,string  )"
Отправлено tigo , 10-Авг-07 12:51 
>[...]
>>А на простом Си? не плюс плюс
>
>А самому поискать?
>
>man strtok, man strchr

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


"Аналог PHP'шной функции array explode (separator,string  )"
Отправлено anonymous , 10-Авг-07 12:59 
>>[...]
>>>А на простом Си? не плюс плюс
>>
>>А самому поискать?
>>
>>man strtok, man strchr
>
>да, я знаю... просто то что я написал с приминением этих функций,
>ну мягко говоря не очень...
>подумал может есть оптимизированная и написаная людьми поумнее меня...

Вы ведь говорили что учитесь программировать на Си, верно?  Тогда это будет хорошим упражнением, можно понять многие аспекты, связанные со строками в Си.


"Аналог PHP'шной функции array explode (separator,string  )"
Отправлено tigo , 10-Авг-07 13:06 
Ок, всем спасибо. Тема закрыта.