5 Ocak 2015 Pazartesi

String Tokenizer

Tokenize - Karakter ile

String ile çalışırken Split ve Tokenizer şeklinde iki farklı yöntem karşımıza çıkıyor.
Aralarındaki fark şöyle :
Split ile verilen cümle değerlerine ayrıştırılıp bir dizi dönülür. Tokenizer ile değerler teker teker alınır.

C++
1. yöntem olaram getline() metodu ayraç olarak kullanılacak karakteri parametre verilerek kullanılabilir. Örnek'te satır okunduktan sonra  | işareti ile kelimelere ayrılıyor
std::istringstream isstream(line);
for (std::string s; getline(isstream, s, '|');) {...}
  // do stuff with s
2. yöntem olarak string sınıfının find_first_not_of() ve  find_first_of() metodları kullanılabilir. kullanılabilir.
void tokenizeCmd(const string &str, vector<string> &tokens, const string &delimiters = " ") {
    string::size_type lastPos = str.find_first_not_of(delimiters, 0);
    string::size_type pos = str.find_first_of(delimiters, lastPos);

    while (string::npos != pos || string::npos != lastPos) {
        tokens.push_back(str.substr(lastPos, pos - lastPos));
        lastPos = str.find_first_not_of(delimiters, pos);
        pos = str.find_first_of(delimiters, lastPos);
    }
}

boost
boost tokenizer yazısına taşıdım.

Java
StringTokenizer yazısına taşıdım.

Hiç yorum yok:

Yorum Gönder