【发布时间】:2016-06-15 08:46:41
【问题描述】:
现在我有两个函数可以做完全相同的解析工作,一个用于char*,一个用于wchar_t*。我只想拥有一个功能,这样我只需要更改一次(为了保持一致性)。将整个字符串转换为char* 或wchar_t* 不是一种选择,因为字符串可能很长,并且不应在内存中重复。
这两个函数的唯一区别是我必须将'a' 用于char* 而L'a' 用于wchar_t*。
有没有办法(例如,使用模板元编程)来实现这一点?
【问题讨论】:
-
如果您需要解析器中的文字,我怀疑这可以通过模板合理地解决。可能是预处理器宏的有效用例。
-
他可以使用
char/char*文字,然后将其“转换”为适当的类型 -
你愿意依赖
wchar_t('a') == L'a'吗?这在形式上是不可移植的,但可以通过static_assert进行验证。 IE。它适用于健全的系统,不能在其他地方编译。
标签: c++ templates char wchar-t wchar