C++Spirit Boost:将输入迭代器转换为前向迭代器
C++ Spirit Boost: Making a input iterator into a forward iterator
所以我对Boost很陌生,但在vs2010中的win32应用程序项目中,我在尝试做一些最基本的事情时遇到了问题。
我已经进入了我的vs2010项目属性,并确保我的include文件位于正确的位置,当我构建时,我不会在stdafx.h中收到错误,包括来自boost的hpp文件,但是当我在他们的网站上阅读文档时:http://www.boost.org/doc/libs/1_43_0/libs/spirit/doc/html/spirit/support/multi_pass.html我只是得到一堆基本错误,比如multi_pass是未定义的。
我只需要boost做一件事,那就是从我当前的输入操作符创建一个正向操作符,这样我就可以通过一个函数传递它。下面是我的输入运算符的声明。
std::istreambuf_iterator<char> eof;
我在同一页上找到了一个替代解决方案,其中std::basic_stream_iterator实际上是一个正向运算符,但当我编译时,我收到一个错误,说basic_stream_iterator不是std库的一部分。
最后,我对迭代器本身和boost真的很陌生。我想知道如何将输入迭代器转换为前向迭代器,以便在文件中进行迭代器。
与注释siad一样,您需要包含正确的支持标头。
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/support_multi_pass.hpp>
然而,最简单的方法是:
std::ifstream file("myfile.txt", std::ios::binary);
file.unsetf(std::ios::skipws);
// use the ready-made:
boost::spirit::istream_iterator f(file), l;
// parse!
book ok = qi::parse(f, l, my_grammar);
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- C++ 如何为自己的迭代器类从迭代器转换为const_iterator?
- C++将向量迭代器转换为索引
- 从迭代器转换为变量的类型.(C++11 模板)
- 提高迭代器转换const_iterator
- 将字符串::迭代器转换为标准::字符串
- C++将迭代器转换为指针(并将 end() 转换为 nullptr)
- C++Spirit Boost:将输入迭代器转换为前向迭代器
- 将迭代器转换为指针,尤其是在end()处
- Deque索引迭代器转换
- 将多映射迭代器转换为随机访问迭代器
- 将迭代器转换为标量索引
- 无法将uint8_t矢量迭代器转换为常量 uint8_t *
- 如何将列表 STL 的迭代器转换为实例 (C++)
- 适配器,用于将任何迭代器转换为随机访问迭代器
- 将取消引用字符迭代器转换为 int C++
- 如何在C++中将矢量迭代器转换为 int
- c++入门第3章迭代器转换错误
- 将rend迭代器转换为end iteterator