给定一个数值常量,如UINT64_MAX
,十进制字符串长度的常量表达式是什么(例如 *,“18446744073709551615”)?
下面是一个使用预处理器将常量字符串化的例子:
#define stringify(x) #x
constexpr size_t maxlen {std::char_traits<char>::length(stringify(UINT64_MAX))};
是否有一个常量表达式 * 不 * 使用预处理器?std::numeric_limits<T>
看起来应该会有所帮助,但是
#include <iostream>
#include <limits>
int main()
{
std::cout << std::numeric_limits<uint64_t>::digits10 << std::endl;
std::cout << std::numeric_limits<uint64_t>::max_digits10 << std::endl;
}
印刷品
19
0
目前尚不清楚std::numeric_limits<uint64_t>::digits10 + 1
是否是该问题的通用解决方案。
1条答案
按热度按时间gzszwxb41#
或许可以这样说:
Demo