4 Stimmen

Verwendung eines Klassifizierers mit einem split_iterator

Es gibt etwas über die Boost-String-Algorithmen, die ich zu vermissen scheinen. Ich versuche, einen split_iterator mit einem mit Clasifier als Split-Punkt zu verwenden. So möchte ich zum Beispiel in der Lage sein, etwas wie dieses zu tun:

make_split_iterator(str, is_space);

make_split_iterator erwartet jedoch einen Bereich und einen Finder. Ich muss also eine Sequenz finden, um einen Finder aus einem Classifier zu erstellen. Weiß jemand, wie man das macht, oder ob es überhaupt möglich ist?

9voto

Cubbi Punkte 44766

Sie können verwenden token_finder wie in make_split_iterator(str, token_finder(is_space())) o make_split_iterator(str, token_finder(is_any_of(" "))) usw.

Vollständiges Beispiel: Angenommen, Ihr Ziel ist die Tokenisierung (daher token_compress_on )

#include <string>
#include <iostream>
#include <boost/algorithm/string.hpp>
int main()
{
        std::string str = "This is a      test string";

        for( boost::algorithm::split_iterator<std::string::iterator> i
            = make_split_iterator(str, token_finder(
                                        boost::algorithm::is_space(),
                                        boost::algorithm::token_compress_on));
             i != boost::algorithm::split_iterator<std::string::iterator>();
             ++i)
        {
                std::cout << *i << '\n';
        }
}

Testlauf: https://ideone.com/vQ2ZM

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X