根据给定的 Boost token_iterator 识别原始字符串中的位置
如果使用 Boost 分词器处理字符串,是否可以获取给定标记迭代器所指向的原始字符串中的位置:
boost:tokenizer<> tok( "this is the original string" );
for(tokenizer<>::iterator it=tok.begin(); it!=tok.end();++it)
{
std::string strToken = *it;
int charPos = it.? /* IS THERE A METHOD? */
}
我意识到我可以使用定义的“保留分隔符”列表创建一个特定的 char_separator 并指定 keep_empty_tokens尝试自己跟踪迭代器的进度,但我希望有一种更简单的方法,仅使用迭代器本身。
If a string has been processed using a Boost tokenizer is it possible to get the position in the original string that a given token iterator is pointing to:
boost:tokenizer<> tok( "this is the original string" );
for(tokenizer<>::iterator it=tok.begin(); it!=tok.end();++it)
{
std::string strToken = *it;
int charPos = it.? /* IS THERE A METHOD? */
}
I realize I could create a specific char_separator with a defined list of 'kept delimiters' and specify keep_empty_tokens to try and track the progression of the iterator myself but I was hoping there was an easier way using just the iterator itself.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您只需要当前令牌的结尾,则使用
base()
成员函数可能会达到目的:
不幸的是,似乎没有办法找回开头
boost::tokenizer
中的当前令牌。If you need only the end of current token,
base()
member functionmight meet the purpose:
Unfortunately, there seems not to be the way to retrieve the beginning
of current token in
boost::tokenizer
.怎么样:
How about:
这似乎就是您正在寻找的内容:
在线演示
This appears to be what you're looking for:
Online Demo