0

用 C++ 编写 Bencode 解析器的最佳方法是什么。虽然我对外部库的建议持开放态度,这可能会使任务更容易,但我认为如果我编写自己的解析器,我会在 C++ 中学到一些有价值的课程。请记住,我仍然愿意接受这个建议:)

提前致谢

4

2 回答 2

1

它相对简单,只需在http://en.m.wikipedia.org/wiki/Bencode#section_1上阅读它的工作原理即可。

或者,谷歌发现了这个 C++ 库:https ://github.com/kriben/bencode 。

您还可以从http://effbot.org/zone/bencode.htm获得一些灵感,这是一个简单的 Python 实现。

于 2012-07-04T19:00:26.300 回答
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;
于 2019-06-27T10:59:30.003 回答