【发布时间】:2021-12-13 03:25:12
【问题描述】:
我有一个 Unicode 字符串文字,可以这样说。
const char8_t x[] = u8"aaa\nbbb©\nccc\n";
为了便于阅读,我想将其拆分为多行。
下面哪些符号是正确的并且与上面的符号等效?
const char8_t x[] =
u8"aaa\n"
u8"bbb©\n"
u8"ccc\n";
const char8_t x[] =
u8"aaa\n"
"bbb©\n"
"ccc\n";
const char8_t x[] =
"aaa\n"
u8"bbb©\n"
"ccc\n";
所有似乎都可以编译,但恐怕其中一些可能是实现定义的。
【问题讨论】:
-
显然,您不会使用第三个,因为它的可读性较差。
-
如果你想要可读性,那你为什么不使用原始字符串文字?参见#6:en.cppreference.com/w/cpp/language/string_literal.
-
@Phil1970 那是不是意味着我必须放弃缩进?
-
嗯,这取决于您如何处理数据。如果您编写 SQL、HTML、XML 或类似的代码,您可能不一定关心额外的缩进,或者您可以通过代码修复它,或者您可能更喜欢没有
"和\n的未缩进文本。此外,还可以编写一个constexpr函数或运算符来修复字符串。
标签: c++ multiline prefix string-literals