【发布时间】:2020-01-10 19:25:58
【问题描述】:
考虑以下示例:
template<class CharT>
bool is_minus(CharT c) {
return c == '-';
}
//assert(is_minus('-')); // works of course
assert(is_minus(u8'-'));
assert(is_minus(u'-'));
assert(is_minus(U'-'));
assert(is_minus(L'-'));
这适用于我的系统。标准会保证这在所有系统上都能正常工作吗?考虑到函数中的字符文字是不同的类型。其他角色也是这样吗?
如果不能保证,有没有办法以通用方式编写文字,以便我根据模板中的CharT 获得'-', u8'-', u'-', U'-' or L'-' 之一。
注意:在某些语言环境中可用于表示替代减号的 Unicode 字符超出了问题的上下文。
【问题讨论】:
-
如果你发现一个系统使用 (in-?) 著名的 EBCDIC 编码 (ASCII/unicode '-' == 0x2d, EBCDIC '-' == 0x60)... 通用方式?假设您需要专门针对普通 char 和 wchar_t (C++20),之前,我认为 u8'-' 和 '-' 不能被解析为同一类型...
标签: c++ character-encoding char literals widechar