【发布时间】:2014-06-02 16:53:18
【问题描述】:
我正在寻找一种在编译时将数字转换为字符串文字的方法。它应该看起来像这样:
template <unsigned num>
struct num_to_string {
constexpr static char value[] = /* ... magic goes here ... */;
};
所以num_to_string<5>::value 等于"5" 或{'5', '\0'}。
这对于在编译时从某个数字生成字符串很有用,该数字是其他一些 constexpr 数字计算的结果。
另外请注意,我只对unsigned 数字感兴趣,因为这应该更容易处理。签名版的奖励积分:)
编辑: 请注意,这类似于C++ convert integer to string at compile time,但不一样。在这里,我明确希望使用 constexpr 而不是宏来帮助泛型编程。
【问题讨论】:
-
我认为三年时间足以发现如何格式化代码块!
-
我不完全确定这个“code plz”问题是否完全符合主题,但我认为它很有趣,值得保留。以后可以试一试。
-
C++11/14 和 C++0.786 一样,还是 C++0?嗯,你决定....
-
其实这对于字面量来说还是很简单的:
template<char... cs> auto operator"" _cs() -> std::array<char, sizeof...(cs)+1> { return {cs..., '\0'}; }Live example -
@dyp,比这更简单:
auto operator""_cs(const char* lit) { return lit; }- Live example