问题标签 [boost-tokenizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost::tokenizer 逗号分隔 (c++)
对你们来说应该是一件容易的事......
我正在使用 Boost 使用标记器,我想创建一个以逗号分隔的标记。这是我的代码:
我想要的输出是:
我得到的是:
更新
c++ - 增强词汇转换查看
这应该是一件容易的事。我有一个函数可以遍历 csv 并基于逗号进行标记并使用标记执行操作。其中之一是将其转换为 int。不幸的是,第一个标记可能并不总是一个 int,所以当它不是时,我想将它设置为“5”。
目前:
c++ - Boost.Tokenizer 用于引号和括号
我想使用Boost.Tokenize
. 要求引号或括号中的文本是一个完整的标记。更具体地说,我需要分割一条线
变成像这样的代币
或者可能
我知道用引号标记文本的方法,但我不知道如何同时用双引号标记文本。也许需要实施TokenizerFunction
。
如我所述,如何拆分字符串?
c++ - c++算术字数转换,求指教
谢谢Joachim,但我无法编译它,我想这可能是我设置它的方式,所以我像你说的那样删除了for循环,并将这些函数合并到我的calculator.cpp文件中。因此,当我编译程序时,会导致以下错误:
错误:“ParseNumberWord”未声明(首先使用此函数)
计算器.h
计算器.cpp
主文件
c++ - c ++迭代器循环与索引循环
我知道这是一个非常愚蠢的问题,但我想澄清一下。
假设我有一个字符串向量看起来像,
非常简单。但是当我想使用迭代器打印出等效结果时该怎么办?例如,
当然,vnTemp.end()-1
由于它是指针,所以会导致错误。
在这种情况下,等效的 for 循环是什么?当它们都在优化(-o)模式下编译时是否有任何性能差异?
编辑:
我刚刚意识到这实际上适用于vector
. 我使用boost::tokenizer
代码时发生的问题是这样的:
这是原始代码,当我尝试tokens.end()-1
在 for 循环中说时发生错误。
有什么办法可以解决这个问题吗?对歧义感到抱歉。
c++ - boost分词器的随机行为
我对 boost tokenizer 有疑问,这是我的代码:
此代码的行为并非始终一致。有时它有效,有时在多次运行时无效。当它在这里不起作用时,我得到一个输出:
我究竟做错了什么 ?
谢谢。
c++ - 在 Switch 案例中标记字符串
我正在基于分隔符(使用 Boost Tokenizer)对字符串进行标记,然后根据状态变量的值对标记进行处理。
我遇到的问题:其中一种情况需要进一步标记字符串。这会导致错误,因为在 case 中声明了 tok1 和 token 迭代器变量。我试过在开关之外声明它们,然后在机箱内分配它们,但这不起作用。
有谁知道我可以如何完成这项工作,或者是否有更好的方法来进一步标记案例内的字符串?谢谢!
下面的示例代码:
c++ - 使用 boost::tokenizer 和 boost::iterator_range
我boost::tokenizer
用来读取类似 CSV 的文件。我将令牌存储在std::vector
. 它运作良好,但我只想boost::iterator
为每个令牌存储一个。
我试过:
但它无法编译:
/usr/include/boost/token_functions.hpp:在 'bool boost::escaped_list_separator::operator()(InputIterator&, InputIterator, Token&) 的实例化中 [with InputIterator = __gnu_cxx::__normal_iterator >; 令牌 = boost::iterator_range<__gnu_cxx::__normal_iterator >>; 字符 = 字符;Traits = std::char_traits]': /usr/include/boost/token_iterator.hpp:70:11: 需要来自'void boost::token_iterator::initialize() [with TokenizerFunc = boost::escaped_list_separator; 迭代器 = __gnu_cxx::__normal_iterator >; 类型 = boost::iterator_range<__gnu_cxx::__normal_iterator >>]' /usr/include/boost/token_iterator.hpp:77:63: 来自 'boost::token_iterator::token_iterator(TokenizerFunc, Iterator, Iterator) [with TokenizerFunc = boost::escaped_list_separator; 迭代器 = __gnu_cxx::__normal_iterator >; 类型 = boost::iterator_range<__gnu_cxx::__normal_iterator >>]' /usr/include/boost/tokenizer.hpp:86:53: 来自 'boost::tokenizer::iter boost::tokenizer::begin() 常量[与 TokenizerFunc = boost::escaped_list_separator; 迭代器 = __gnu_cxx::__normal_iterator >; 类型 = boost::iterator_range<__gnu_cxx::__normal_iterator >>; boost::tokenizer::iter = boost::token_iterator, __gnu_cxx::__normal_iterator >, boost::iterator_range<__gnu_cxx::__normal_iterator >> >]' /home/wichtounet/dev/gooda-to-afdo-converter/src/ gooda_reader.cpp:58:37: 从这里需要 /usr/include/boost/token_functions.hpp:187:16: 错误: 'tok += (& next)->__gnu_cxx::__normal_iterator 中的 'operator+=' 不匹配<_Iterator, _Container>::operator* >()' /usr/include/boost/token_functions.hpp:193:11: 错误:'tok += (& next)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* >()' /usr/include/boost/token_functions.hpp 中的 'operator+=' 不匹配:在实例化中'void boost::escaped_list_separator::do_escape(iterator&, iterator, Token&) [with iterator = __gnu_cxx::__normal_iterator >; 令牌 = boost::iterator_range<__gnu_cxx::__normal_iterator >>; 字符 = 字符;Traits = std::char_traits]': /usr/include/boost/token_functions.hpp:176:11: 来自'bool boost::escaped_list_separator::operator()(InputIterator&, InputIterator, Token&) [with InputIterator = __gnu_cxx: :__normal_iterator >; 令牌 = boost::iterator_range<__gnu_cxx::__normal_iterator >>; 字符 = 字符;特征 = std::char_traits]' /usr/include/boost/token_iterator.hpp:70:11: 'void boost::token_iterator::initialize() [with TokenizerFunc = boost::escaped_list_separator; 迭代器 = __gnu_cxx::__normal_iterator >; 类型 = boost::iterator_range<__gnu_cxx::__normal_iterator >>]' /usr/include/boost/token_iterator.hpp:77:63: 来自 'boost::token_iterator::token_iterator(TokenizerFunc, Iterator, Iterator) [with TokenizerFunc = boost::escaped_list_separator; 迭代器 = __gnu_cxx::__normal_iterator >; 类型 = boost::iterator_range<__gnu_cxx::__normal_iterator >>]' /usr/include/boost/tokenizer.hpp:86:53: 来自 'boost::tokenizer::iter boost::tokenizer::begin() 常量[与 TokenizerFunc = boost::escaped_list_separator; 迭代器 = __gnu_cxx::__normal_iterator >; 类型 = boost::iterator_range<__gnu_cxx::__normal_iterator >>; 升压::分词器::
我也只是尝试使用 自己计算两个迭代器boost::token_iterator
,但到目前为止我还没有成功。
是否有解决方案只获取每个令牌的迭代器范围而不是字符串以节省一些性能?
c++ - 从 Boost::Tokenizer 中删除重复项?
我正在尝试拆分以逗号分隔的字符串,然后对每个令牌执行一些操作,但忽略重复项,等等。大致如下:
有没有办法在 boost::tokenizer 上做到这一点?
我知道我可以使用 boost::split 和 std::unique 来解决这个问题,但我想知道是否有办法使用标记器来实现这一点。
c++ - 用反斜杠(\)分隔符c ++读取输入文件
我的输入文件是这样的:
我正在制作一棵树,我需要在从带有\
分隔符的输入文件中读取时抽象目录的名称。和上面的例子一样,我需要分别抽象出c:、users、DeadCoder、Appdata ....希望大家理解问题。现在让我们看看我们得到的选项。
1-
istringstream
适用于whitespace
但不适用于\
.
2-
strtok()
在 char 上工作。所以我必须将我的字符串更改为 char 并且我真的不想这样做。
3- Boost Tokenizer()
这个看起来很有趣,我过去对它并不熟悉,只是我刚刚在谷歌上搜索了一下。我复制了代码,它是这样的:
现在这给出了 "error: boost/foreach.hpp: No such file or directory"
有人可以在这里帮助我的错误。还有其他better way
方法可以使用 . 读取输入文件吗\ delimiter
?请不要像class tokenizer()
我还在学习 c++ 那样使用大量代码。
编辑:我没有安装 boost 库,因此我遇到了这个错误。如果有人可以在tokenize
不安装第三个库的情况下解释一种更好的字符串方式,那将是非常受欢迎的。
最好的; 死编码器。