0
静态字符我想要做这样的事情:初始化基于模板参数
template<typename T>
const char * toStr(T num)
{
thread_local static char rc[someval*sizeof(T)] str = "0x000...\0"; // num of zeros depends on size of T
// do something with str
return str;
}
我猜有一些模板元编程我必须做的,但我不知道从哪里开始。
编辑:
我发现了一个相关的问题在这里:How to concatenate a const char* in compile time
但我不希望在提升的依赖。
1.大小应该(可能)是'3 + 2 * sizeof(T)'。 2.在这种情况下'\ 0'增加了第二个无用的空终止符。我认为你不想拥有它。 3.我会说你根本不需要初始化数组。只需在每次通话时将您的号码“sprintf”输入即可。 4.如果您使用C++,为什么不使用'std :: string's而不是'char'数组? – HolyBlackCat
@HolyBlackCat这只是一个示范例子。 3 + 2 * sizeof(T)的确是当前植入用于尺寸的。我忘记了隐式字符串文字。感谢您的提醒。我使用的是受此解决方案启发的实现:http://stackoverflow.com/a/33447587因为这是一个性能敏感的应用程序。结果被调用函数复制,所以我不想额外的字符串分配。 –