在C ++中编写Bencode Parser的最佳方法是什么?虽然我对外部库的建议持开放态度,这可能会使任务变得更容易,但我认为如果我编写自己的解析器,我将学习一些有价值的C ++课程。请记住,我仍然接受以下建议:)
提前致谢
答案 0 :(得分:1)
这是相对简单的,只需阅读http://en.m.wikipedia.org/wiki/Bencode#section_1for示例中的工作原理。
或者,谷歌找到了这个C ++库:https://github.com/kriben/bencode。
您还可以从http://effbot.org/zone/bencode.htm获得一些灵感,这是一个简单的Python实现。
答案 1 :(得分:0)
除了重新实现轮子之外,一种可能的方法是使用libbencode库(我是作者)。它提供了基于模板的构建Bencode数据的方法。
API相当有限,但可能可以满足您的需求:
// Create an associative array of Bencode values.
bencode::dict d;
d["port wine"] = bencode::make_integer(777);
d["green"] = bencode::make_string("elephant");
// Create a new Bencode output stream
bencode::ostream os(std::cout.rdbuf());
// Put the data to the stream
os << d;