您可能已经知道,C++ 11 中的新字符串文字可以以非常灵活的方式表示。
R"<delim>...<delim>";
- 在这段代码中,<delim>
几乎可以是所有内容,也不需要转义字符。任何类型的括号都可以用来分隔字符串的结尾,原始字符串文字在定义正则表达式时特别有用:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
可以使用相同字符的相等次数来简单地定义文本块:
R";***************************(
; TINY BASIC FOR INTEL 8080
; VERSION 2.0
; BY LI-CHEN WANG
; MODIFIED AND TRANSLATED
; TO INTEL MNEMONICS
; BY ROGER RAUSKOLB
; 10 OCTOBER, 1976
; @COPYLEFT
; ALL WRONGS RESERVED )
;***************************";
更多信息可以在这里找到(维基百科)。
我想用 C++ 处理器来实现它,这就是我所拥有的。现在不支持双引号,我需要像C++ 11一样竞争它。有人可以帮助我吗?
#define STR(a) #a
#define R(var, re) static char var##_[] = STR(re);\
const char * var = ( var##_[ sizeof(var##_) - 2] = '\0', (var##_ + 1) );
你可以像这样使用它:
R(re, "\w\d");//It's OK, no warnings.
代码使用不友好。所以我想要像 C++ 11 原始字符串文字这样的功能。
PS:我用的是Visual C++ 2010,不支持新特性,必须自己实现。