14 Nisan 2017 Cuma

tokenizer Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/tokenizer.hpp>
Tüm sınıf TokenizerFunc üzerine kurulu. Bu metodu gerçekleştiren
1. char_delimeters_separator (depricated),
2. char_separator
3. escaped_list_separator

sınıfları var.

Bu sınıflar ayraç olarak karakter kullanıyorlar. Birden fazla ayraç tanımlamak mümkün ancak maalesef ayraç olarak string kullanmak bu sınıflarla mümkün değil.Dolayısıyla araç olarak "ab" gibi bir şey kullanamıyoruz.

Eğer ayraç olarak string kullanmak istersek şöyle yaparız.

Template Parametreleri
tokenizer sınıfı default template paramereleri tanımlar. Bunlar şöyledir.
template <
    class TokenizerFunc = char_delimiters_separator<char>, 
    class Iterator = std::string::const_iterator,
    class Type = std::string
>
class tokenizer;
Eğer depricated char_delimeters_separator sınıfını kullanmak istemezsek şöyle yaparız.
typedef boost::tokenizer<boost::char_separator<char> > Tokenizer;
Constructor - string
Şöyle yaparız.
std::string s = "...";
boost::tokenizer<> tok (s);
Constructor - string + char_separator
Şöyle yaparız.
string str = "...";

boost::char_separator<char> sep(" \t");
boost::tokenizer<char_separator<char> > tokens(str, sep);
Constructor - string + escaped_list_separator
escaped_list separator csv formatında kullanılır. a,"b,c",d gibi bir string'de " karakteri ile escape edilmesi gereken durumlarda işe yarar. Şöyle yaparız.
string str = "...";
string separator1(""); //dont let quoted arguments escape themselves
string separator2(",\n"); //split on comma and newline
string separator3("\""); //let it have quoted arguments

escaped_list_separator<char> els(separator1, separator2, separator3);
tokenizer<escaped_list_separator<char>> tok(str, els);
assign metodu - string
Yeni bir string'i tokenlara ayırmak içindir. Şöyle yaparız.
std::string str = "...";
boost::tokenizer<> tok (str);

str = "..."
tok.assign (str);
begin ve end metodları
iterator tip olarak std::string döner. Şöyle yaparız.
string token = *it;
Şöyle yaparız.
boost::tokenizer<> tok = ...;
for (tok::iterator it = tok.begin(); it != tok.end(); ++it){
  std::cout << *it << " : ";
}
Şöyle yaparız.
BOOST_FOREACH (string t, tok)
{
  std::cout << t << ":";
}
Şöyle yaparız.
for (auto t : tok
{
  std::cout << t << '" : ";
}
const auto& olarak kullanmak için şöyle yaparız.
for (const auto& t : tok) {
    std::cout << t << std::endl;
}

Hiç yorum yok:

Yorum Gönder