c++ - 如何存储可以用字符串分配的数值

标签 c++ user-interface data-structures store

我正在创建一个 GUI 结构,显然我有两个主要参数:宽度和高度。 (为简化起见,假设这些是我唯一的值(value)观。)我正在用 C++ 开发它。

我有一个 XML 文件,它构建了小部件的结构层次结构,我有一个类似 CSS 的文件,它给出了结构中每个节点的值(宽度和高度)。 当程序启动时,我读取并解析这些文件。现在我的问题是,从我的 CSS 类文件中存储变量的最佳做法是什么?

如果 width 和 height 参数只是数字,那么答案很简单,因为我将它们存储在一个 int 中。但就我而言,在我的类似 CSS 的文件中,我可以将值“parent”或“child”赋予宽度和高度,这意味着它们的尺寸与其父节点或子节点相同。

一个简单的解决方案是在解析它们时将一些数字(例如负数)分配给“parent”和“child”,但这看起来并不优雅。

我想到的另一个解决方案是创建一个结构,例如我可以在其中存储两个 bool 变量和一个 int,bool 变量将指示它应该是“父”还是“子”,但出于某种原因这对我来说也不太优雅,但我可能是错的。

有没有人有任何建议,也许是其他解决方案,或者知道在这种情况下的最佳做法?非常感谢所有帮助和提示!

最佳答案

一个解决方案:存储一个数字和单位的元组。使用一组固定的单位,其中包括特殊单位,例如 PARENT 和 CHILD,以及您的默认单位(例如 PIXELS)。这种表示很容易扩展到其他类似 CSS 的维度单位(例如,EMS、PICAS 等。)

struct Dimension
{
  typedef int value_type;

  enum struct units_type { PARENT, CHILD, PX };

  units_type units;
  value_type value;
};

对于特殊单元,例如 PARENT 或 CHILD,您的逻辑可以忽略存储的任何值。

关于c++ - 如何存储可以用字符串分配的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967096/

相关文章:

c++ - 无法理解线路的工作原理

excel - 非常大的 CSV 阅读器应用程序(GUI)

c++ - Windows XP 样式 : Why do we get dark grey background on static text widgets?

c++ - 构建一个不完整的二叉树

c++ - 从 vector 中的父基转换的模板化子 T 生成的虚假字符

c++ - 如何在 C++ 中创建带有自定义比较器的 std::set?

c++ - 为什么我不能从这个数据集中删除虚假的 0?

java - GUI结构组织

c++ - 二叉堆 - 如何以及何时使用 max-heapify

Javascript - 具有键值对的对象,其中值是一个数组