gpt4 book ai didi

c++ - 从给定的 Boost token_iterator 识别原始字符串中的位置

转载 作者:太空狗 更新时间:2023-10-29 20:30:47 26 4
gpt4 key购买 nike

如果字符串已使用 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 以尝试自己跟踪迭代器的进程,但我希望有一种仅使用迭代器本身的更简单的方法。

最佳答案

这似乎是您要查找的内容:

#include <string>
#include <iostream>
#include <boost/tokenizer.hpp>

int main()
{
typedef boost::tokenizer<> tok_t;

std::string const s = "this is the original string";
tok_t const tok(s);
for (tok_t::const_iterator it = tok.begin(), it_end = tok.end(); it != it_end; ++it)
{
std::string::difference_type const offset = it.base() - s.begin() - it->size();
std::cout << offset << "\t::\t" << *it << '\n';
}
}

Online Demo

关于c++ - 从给定的 Boost token_iterator 识别原始字符串中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5856301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com