以下代码段(虽然在Java中)从CamelCase转换为snake_case。 我应该怎么做才能在C / C ++宏中(即 #define 行)?
String regex = "([a-z])([A-Z]+)";
String replacement = "$1_$2";
System.out.println("CamelCaseToSomethingElse".replaceAll(regex, replacement).toLowerCase());
答案 0 :(得分:1)
在构建过程中进行这种转换。
编写一个转换程序,给定一个字符串输入文件,它将生成一个C / C ++头文件,其中包含每个所需转换的定义。
因此,给定一个带有条目的输入文件:
TOKEN="Hello World"
创建一个转换,输出包含以下内容的头文件:
#define R_TOKEN="Hello World" // Regular text
#define U_TOKEN="HELLO_WORLD" // Upper case token transform
#define L_TOKEN="hello_world" // Lower case token transform
#define C_TOKEN="HelloWorld" // Capital CamelCase token transform
#define K_TOKEN="helloWorld" // Lowercase CamelCase token transform
等等......
将转换添加到构建规则中,结果标头会依赖于需要它的源文件(google makedepends)。
(在make
中无关紧要......)
答案 1 :(得分:0)
我应该怎么做才能在C / C ++宏中做到这一点(即在#define中 线)?
你必须非常好地学习C ++,在C ++社区中获得足够的分量并成为C ++标准化委员会的成员。然后,您可以为C ++标准提出声音增强,这将允许将其实现为宏。但是,不希望这比c ++ 2x早发生。因此,修改您的要求可能是解决您手头问题的更好方法。