gpt4 book ai didi

c++ - 用前导零进行字符串化

转载 作者:行者123 更新时间:2023-12-03 07:09:13 24 4
gpt4 key购买 nike

我正在寻找一种在编译时以字符串文字形式在C++中具有固定长度的设备名称的方法。
例如 :

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

#define VERSION 6
#define DEVICE_NAME "MyDevice" STR(VERSION)
我想要的输出是固定长度,前导零适合4位数字,就像 "MyDevice0006"一样,使用先前代码的实际输出是 "MyDevice6"
我搜索并找到了这个 answer:
#undef VER
#define VER ...your version number...

#undef SMARTVER_HELPER_
#undef RESVER
#if VER < 10
#define SMARTVER_HELPER_(x) 000 ## x
#elif VER < 100
#define SMARTVER_HELPER_(x) 00 ## x
#elif VER < 1000
#define SMARTVER_HELPER_(x) 0 ## x
#else
#define SMARTVER_HELPER_(x) x
#endif
#define RESVER(x) SMARTVER_HELPER_(x)
但是尝试它给我错误:
error: expected ‘;’ before numeric constant
#define SMARTVER_HELPER_(x) 00 ## x
^
有增强的代码可以做到这一点吗?

最佳答案

非常丑陋,但这应该可以解决问题:

#include <stdio.h>

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

#define VERSION 6

#if (version < 10)
#define DEVICE_NAME "MyDevice000" STR(VERSION)
#elif (version < 100)
#define DEVICE_NAME "MyDevice00" STR(VERSION)
#elif (version < 1000)
#define DEVICE_NAME "MyDevice0" STR(VERSION)
#else
#define DEVICE_NAME "MyDevice" STR(VERSION)
#endif

int main(void)
{
puts(DEVICE_NAME);
}

关于c++ - 用前导零进行字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64967682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com