这个接口后面的东西:
class StreamTokenizer
{
public:
StreamTokenizer(const std::string delimiter);
std::list<std::string> add_data(const std::string);
std::string get_left_over();
};
StreamTokenizer d(" ");
std::list<std::string> tokens;
tokens.append(d.add_data("tok"));
tokens.append(d.add_data("1 t"));
tokens.append(d.add_data("ok2 tok3"));
tokens.push_back(d.get_left_over());
// tokens = {tok1, tok2, tok3}
// d = {}
它以块的形式接收数据,它应该返回它迄今为止找到的所有标记,它应该能够将剩余部分连接到下一个块,并且它不应该保存已经标记化的数据。
请不要建议使用 stringstream,除非您可以展示如何从中删除已标记化的数据(我的流实际上是无限的)