【发布时间】:2011-01-22 18:53:19
【问题描述】:
我正在开发一个 GUI 框架,我希望所有元素都由最多 8 个字符的 ascii 字符串标识(或者 7 个就可以了)。
每次触发事件时(有些只是点击,但有些是连续的),框架会用 id 及其值回调到客户端代码。
我可以使用实际的字符串和 strcmp(),但我希望它非常快(对于移动设备),所以我想使用 char 常量(例如 int id = 'BTN1';)所以你会做一个单一的int比较来测试id。但是,4 个字符的可读性不够。
我尝试了一个实验,比如—— long int id = L'abcdefg';
...但看起来 char 常量只能容纳 4 个字符,而制作 long int char 常量的唯一方法是让您的 4 个字符宽两倍,而不是两倍人物。我在这里遗漏了什么吗?
我想让编写客户端代码的人更容易。 gui 存储在 xml 中,因此 id 是从字符串中加载的,但是客户端代码中会写入常量来比较它们。
所以,总而言之,我正在寻找一种跨平台的方法来快速进行 7-8 字符比较,有什么想法吗?
【问题讨论】:
-
每秒进行多少次比较?不用出汗,用绳子就够快了。
-
如果您的目标是为组件提供命名方案,请不要使用 long-char 的 ascii。
-
这可能是不可移植的。根据 C++ 标准,多字符文字(在 's 之间的多个字符)的值是实现定义的。检查您的实现文档以查看它是否正在执行您想要的操作,并检查所有可用于查看它们都执行相同操作的实现。
-
你说得对,Pop 和 Hassan,我想这不会影响性能,并且从一开始就限制了 64 位字符串。会用字符串。
标签: c++ string comparison