Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost Char Separator

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

C++ Boost

char_separator<Char, Traits>

Шар_сепараторкласс разбивает последовательность символов на токены, основанные на разграничителях символов, почти так же, какstrtok()делает (но без всех зол невозвращения и разрушения входной последовательности).

char_separatorкласс используется совместно стокен_iteratorилитокенизатордля выполнения токенизации.

Definitions

Функцияstrtok()не включает совпадения с ограничителями символов в выходной последовательности токенов. Однако иногда полезно, чтобы разграничители отображались в выходной последовательности, поэтомуchar_separatorпредоставляет это в качестве опции. Мы говорим о разграничителях, которые отображаются в качестве выходных токенов, посколькусохранили разграничителии разграничители, которые теперь отображаются в качестве выходных токенов, посколькусбросили разграничители.

Когда два разграничителя появляются рядом друг с другом во входной последовательности, возникает вопрос, выводить липустой токенили пропустить вперед. Поведениестратокзаключается в том, чтобы проскочить вперед. Классchar_separatorпредоставляет оба варианта.

Examples

Первые примеры показывают, как использоватьchar_separatorв качестве заменыstrtok().Функция. Мы определили три ограничителя символов, и они не будут отображаться в качестве выходных токенов. Мы не указали какие-либо сохраненные разграничители, и по умолчанию любые пустые токены будут игнорироваться.

// char_sep_example_1.cpp
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main()
{
  std::string str = ";;Hello|world||-foo--bar;yow;baz|";
  typedef boost::tokenizer<boost::char_separator<char> > 
    tokenizer;
  boost::char_separator<char> sep("-;|");
  tokenizer tokens(str, sep);
  for (tokenizer::iterator tok_iter = tokens.begin();
       tok_iter != tokens.end(); ++tok_iter)
    std::cout << "<" << *tok_iter << "> ";
  std::cout << "\n";
  return EXIT_SUCCESS;
}
The output is:
<Hello> <world> <foo> <bar> <yow> <baz> 

Следующий пример показывает токенизацию с двумя сброшенными разграничителями '-' и ';' и одним сохраненным разграничителем ' |'. Мы также указываем, что пустые токены должны отображаться на выходе, когда два разграничителя находятся рядом друг с другом.

// char_sep_example_2.cpp
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main()
{
    std::string str = ";;Hello|world||-foo--bar;yow;baz|";
    typedef boost::tokenizer<boost::char_separator<char> > 
        tokenizer;
    boost::char_separator<char> sep("-;", "|", boost::keep_empty_tokens);
    tokenizer tokens(str, sep);
    for (tokenizer::iterator tok_iter = tokens.begin();
         tok_iter != tokens.end(); ++tok_iter)
      std::cout << "<" << *tok_iter << "> ";
    std::cout << "\n";
    return EXIT_SUCCESS;
}
The output is:
<> <> <Hello> <|> <world> <|> <> <|> <> <foo> <> <bar> <yow> <baz> <|> <>

Последний пример показывает токенизацию знаков препинания и белого пространства с помощью конструктора по умолчаниюchar_separator.

// char_sep_example_3.cpp
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main()
{
   std::string str = "This is,  a test";
   typedef boost::tokenizer<boost::char_separator<char> > Tok;
   boost::char_separator<char> sep; // default constructed
   Tok tok(str, sep);
   for(Tok::iterator tok_iter = tok.begin(); tok_iter != tok.end(); ++tok_iter)
     std::cout << "<" << *tok_iter << "> ";
   std::cout << "\n";
   return EXIT_SUCCESS;
}
The output is:
<This> <is> <,> <a> <test> 

Template parameters

Parameter Description Default
Чар Тип элементов в токене, как правило,char.  
Черты char_traitsдля типа персонажа. char_traits

Model of

Tokenizer Function

Members


explicit char_separator(const Char* dropped_delims,
                        const Char* kept_delims = "",
                        empty_token_policy empty_tokens = drop_empty_tokens)

Это создает объектchar_separator, который затем может быть использован для созданияtoken_iteratorилиtokenizerдля выполнения токенизации.drop_delimsиkeep_delims— это строки символов, где каждый символ используется в качестве делимитера во время токенизации. Всякий раз, когда в входной последовательности виден делимитер, текущий токен завершается, и начинается новый токен. Ограничители вdrop_delimsне отображаются как токены на выходе, тогда как ограничители вkeep_delimsотображаются как токены. Еслипустые токеныявляютсяопускающимися токенами, то пустые токены не будут отображаться на выходе. Еслипустые токенысохраняют пустые токены, то пустые токены будут отображаться на выходе.


explicit char_separator()

Функцияstd::isspace()используется для идентификации опущенных делимитаторов иstd::ispunct()используется для идентификации хранимых разграничителей. Кроме того, отбрасываются пустые токены.


template <typename InputIterator, typename Token>
bool operator()(InputIterator& next, InputIterator end, Token& tok)

Эта функция называетсяtoken_iteratorдля выполнения токенизации. Пользователь обычно не называет эту функцию непосредственно.


Valid HTML 4.01 Transitional

Пересмотрено25 декабря 200625 December, 2006[ORIG_END] -->

Авторское право и копия; 2001-2002 Джереми Сик и Джон Р. Бандела

Распространяется в соответствии с лицензией Boost Software License, Version 1.0. (См. сопроводительный файлLICENSE_1_0.txtили копию в) http://www.boost.org/LICENSE_1_0.txt)

Статья Boost Char Separator раздела может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:35:31/0.0086648464202881/1