【发布时间】:2013-07-06 22:43:54
【问题描述】:
好的,所以我遇到了一个问题,我有限的编程技能根本无法解决,至少以一种优雅的方式。我想存储来自Valve KeyValues files 的数据,但我想不出一个好的方法。我将在这段代码中说明文件格式的基本结构。
"Key"
{
"Key"
{
"Key" "Value"
"Key" "Value"
}
"Key"
{
"Key" "Value"
"Key" "Value"
}
"Key" "Value"
"Key" "Value"
}
每个值都可以是几种类型之一。每个键都必须具有分配给它的特定类型的值。通过更改类型来定位密钥本身的位置,但我对此表示怀疑。实际上,我已经可以通过键、值和括号对文件进行标记,因此除非有必要,否则我不需要任何帮助。我想创建一个不快速和肮脏并且依赖大量重复代码的系统。如果大家有任何问题,请随时提问。
【问题讨论】:
-
采用现有的解决方案,例如 Protocol Buffers、CORBA 或 XML+SOAP。或者 JSON。
-
我会听取您的建议来寻找现有的解决方案。也许我可以使用一个库来帮助我,比如 Boost,我正在考虑树容器,如果它有我正在寻找的任何东西。在查看 Valve 源代码时,我还发现 KeyValue 存储器不会将值字符串转换为类型。相反,单个函数获取该值并将该值转换为它需要的任何类型。这是需要考虑的事情。我可能会散散步,做一些深入的思考。在此之前,我们将不胜感激。
-
还有一件事要考虑。一些键被标记为“id”,后跟一个整数。由于任何带有 id 的东西都是大量的,我可以使用该 id 来帮助我映射我的数据。
标签: c++ parsing tree key-value