用 C++ 编写 Bencode 解析器的最佳方法是什么。虽然我对外部库的建议持开放态度,这可能会使任务更容易,但我认为如果我编写自己的解析器,我会在 C++ 中学到一些有价值的课程。请记住,我仍然愿意接受这个建议:)
提前致谢
用 C++ 编写 Bencode 解析器的最佳方法是什么。虽然我对外部库的建议持开放态度,这可能会使任务更容易,但我认为如果我编写自己的解析器,我会在 C++ 中学到一些有价值的课程。请记住,我仍然愿意接受这个建议:)
提前致谢
它相对简单,只需在http://en.m.wikipedia.org/wiki/Bencode#section_1上阅读它的工作原理即可。
或者,谷歌发现了这个 C++ 库:https ://github.com/kriben/bencode 。
您还可以从http://effbot.org/zone/bencode.htm获得一些灵感,这是一个简单的 Python 实现。
除了再次重新实现轮子之外,一种可能的方法是使用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;