The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"boost split string"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"boost split string"  +/
Сообщение от handler2006 email(ok) on 21-Дек-11, 17:19 
Здравствуйте!
Имеем:
1. Функцию, проверки на разделитель:
bool isDelimiter(char);

2. Строку, в которой необходимо выделить слова в соответствии с разделителями, возвращаемыми функцией
isDelimiter

В boost есть метод:


split( splitted_vector, source_str, is_any_of("-*"), token_compress_on )

Есть ли возможность вместо is_any_of() передать адрес своей функции

isDelimiter
, как это возможно в STL-алгоритмах find, sort,.. ?
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "boost split string"  +/
Сообщение от handler2006 email(ok) on 21-Дек-11, 23:15 

Как ни прискорбно сообщать, но это действительно так: я даже не потрудился (вернее, даже не сомневался в невозможности простого решения) вставить свою функцию вместо предиката. После подмены предиката функцией разбиение строки на лексемы в одну строчку кода.

#include <iostream>
#include <boost/algorithm/string.hpp>

using namespace std;
using namespace boost;

bool isDelimiter(const char c) {return (c=='*' || c=='-');}

int main (int argc, char * const argv[]) {
    string str1("hello abc-*-ABC-*-aBc goodbye");
    typedef vector< string > split_vector_type;
    split_vector_type SplitVec; // #2: Search for tokens
    split( SplitVec, str1, isDelimiter, token_compress_on ); // SplitVec == { "hello abc","ABC","aBc goodbye" }]
return 0;
}

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "boost split string"  +/
Сообщение от handler2006 email(ok) on 23-Дек-11, 21:07 
У меня возник вопрос:
возможно ли использовать функцию split для типов данных, определяемых пользователем? К примеру, у нас имеется свой класс String и нам необходимо строку данного класса разложить на подстроки этого же класса. Или boost реализован только для стандартных типов?
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру