如何解决C ++宏将字符串转换为字符列表
| 是否有可能拥有一个宏: CHAR_LIST(鸡肉) 扩展为: \'鸡\' [原因是我想要的:因为即使对于中等大小的字符串,宏比手动扩展要方便得多。我需要扩展的原因是将字符串传递给varidiac模板]解决方法
解答者的最新消息,2015年7月:由于上面对问题本身的评论,我们可以看到真正的问题不是宏本身。发问者想要解决的真正问题是能够将文字字符串传递给接受一系列字符作为非类型模板参数的模板。这是该问题的解决方案的ideone演示。那里的实现需要C ++ 14,但是很容易将其转换为C ++ 11。
------------
我认为我们需要一个更清晰的示例来说明如何使用此宏。我们需要一个可变参数模板的示例。 (另一个更新:即使在启用c ++ 0x支持的情况下,在可变参数模板中的g ++ 4.3.3上,这对我也不起作用,但无论如何我都觉得很有趣。)
#include<iostream> // http://stackoverflow.com/questions/6190963/c-macro-to-convert-a-string-to-list-of-characters
#include \"stdio.h\"
using namespace std;
#define TO_STRING(x) #x
#define CHAR_LIST_7(x) TO_STRING(x)[0] \\,TO_STRING(x)[1] \\,TO_STRING(x)[2] \\,TO_STRING(x)[3] \\,TO_STRING(x)[4] \\,TO_STRING(x)[5] \\,TO_STRING(x)[6] \\
int main() {
cout << TO_STRING(chicken) << endl;
printf(\"%c%c%c%c%c%c%c\",CHAR_LIST_7(chicken));
}
定义defining1ѭ的行是您感兴趣的行。我还提供了其他示例来说明它是如何构建的。我对@GMan的自动计数过程链接感到好奇。
, 不,对不起,无法完成。没有将字符串拆分为字符的操作。您可以通过递归元编程获得最接近的结果,但这将使您将数组作为对象,而不是实际的文本表示形式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。