Seb*_*ach 19 c++ ascii numerical numbers digits
必须在C++实现中将字符'0' - '9'设置为具有连续的数值,即:
'0' -> 0+n
'1' -> 1+n
m -> m+n
'9' -> 9+n
Run Code Online (Sandbox Code Playgroud)
我在isdigit([分类](22.3.3.1字符分类))*的文档中找不到它,也不能在语言环境文档中找到它(但也许我看起来不够努力).
在2.3字符集中,我们发现了这一点
基本源字符集由96个字符组成:空格字符,表示水平制表符的控制字符,垂直制表符,换页符和换行符,以及以下91个图形字符
但它没有提到任何顺序(但也许我看起来不够努力).
*:有趣的脚注:
当在循环中使用时,缓存ctype <> facet并直接使用它[而不是isdigit()等,结束注释]或使用ctype <> :: is的向量形式更快.
Seb*_*ach 22
确实不够用力:在2.3中.字符集,第3项:
在源和执行基本字符集中,上述十进制数字列表中 0之后的每个字符的值应比前一个值大1.
这是上面的十进制数字列表:
0 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
因此,实现必须使用字符集,其中十进制数字具有连续表示.因此,您依赖此属性的优化是安全的; 但是,依赖于其他数字(例如'a'..'z')的含义的优化对于标准来说是不可移植的(参见标题<cctype>).如果这样做,请确保断言该属性.
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |