我有一个包含 boost::tokenizer 的类的简单代码示例。
MyTokenizer.h
#pragma once
#include <iostream>
#include <boost/tokenizer.hpp>
class MyTokenizer
{
public:
typedef boost::tokenizer< boost::escaped_list_separator<char> > TokType;
MyTokenizer(std::string);
~MyTokenizer() {};
void printTok();
private:
const TokType tok_;
};
MyTokenizer.cpp
#include "MyTokenizer.h"
MyTokenizer::MyTokenizer(std::string input) :
tok_(input)
{
std::cout << "Created tokenizer from: " << input << std::endl;
for (TokType::iterator it = tok_.begin(); it != tok_.end(); ++it){
std::cout << *it << std::endl;
}
}
void MyTokenizer::printTok(){
std::cout << "printing tokens" << std::endl;
for (TokType::iterator it = tok_.begin(); it != tok_.end(); ++it){
std::cout << *it << std::endl;
}
}
主文件
#include "MyTokenizer.h"
int main(void){
std::string input("a,b,c");
MyTokenizer tok(input);
tok.printTok();
}
当我运行此示例时,它可以通过构造函数正常运行,在循环中打印预期的标记,但在调用 printTok() 时会出现此错误
似乎我无法在构造函数之外创建 MyTokenizer 的迭代器。
编辑
我将 printTok() 方法更改为更简单,同时仍然抛出相同的错误,现在看起来像这样。
void MyTokenizer::printTok(){
TokType::iterator it = tok_.begin();
}