# Poco

# class StringTokenizer

Library: Foundation
Package: Core
Header: Poco/StringTokenizer.h

## Description

A simple tokenizer that splits a string into tokens, which are separated by separator characters. An iterator is used to iterate over all tokens.

## Member Summary

Member Functions: begin, count, end, find, has, operator [], replace

## Types

### Iterator

typedef TokenVec::const_iterator Iterator;

### TokenVec

typedef std::vector < std::string > TokenVec;

## Enumerations

### Options

TOK_IGNORE_EMPTY = 1

ignore empty tokens

TOK_TRIM = 2

remove leading and trailing whitespace from tokens

## Constructors

### StringTokenizer

StringTokenizer(
const std::string & str,
const std::string & separators,
int options = 0
);

Splits the given string into tokens. The tokens are expected to be separated by one of the separator characters given in separators. Additionally, options can be specified:

- TOK_IGNORE_EMPTY: empty tokens are ignored
- TOK_TRIM: trailing and leading whitespace is removed from tokens.

## Destructor

### ~StringTokenizer

~StringTokenizer();

Destroys the tokenizer.

## Member Functions

### begin

Iterator begin() const;

### count

std::size_t count() const;

Returns the total number of tokens.

### count

std::size_t count(
const std::string & token
) const;

Returns the number of tokens equal to the specified token.

### end

Iterator end() const;

### find

std::size_t find(
const std::string & token,
std::size_t pos = 0
) const;

Returns the index of the first occurence of the token starting at position pos. Throws a NotFoundException if the token is not found.

### has

bool has(
const std::string & token
) const;

Returns true if token exists, false otherwise.

### operator []

const std::string & operator[] (
std::size_t index
) const;

Returns const reference the index'th token. Throws a RangeException if the index is out of range.

### operator []

std::string & operator[] (
std::size_t index
);

Returns reference to the index'th token. Throws a RangeException if the index is out of range.

### replace

std::size_t replace(
const std::string & oldToken,
const std::string & newToken,
std::size_t pos = 0
);

Starting at position pos, replaces all subsequent tokens having value equal to oldToken with newToken. Returns the number of modified tokens.