gpt4 book ai didi

c++ - 为什么 C/C++ 字符串文字声明必须是单行的?

转载 作者:IT老高 更新时间:2023-10-28 22:06:24 25 4
gpt4 key购买 nike

C++ 中不允许使用以下多行字符串文字是否有任何特殊原因?

string script =
"
Some
Formatted
String Literal
";

我知道可以通过在每个换行符之前放置一个反斜杠来创建多行字符串文字。我正在编写一种编程语言(类似于 C),并希望能够轻松创建多行字符串(如上例所示)。

是否有任何技术原因可以避免这种字符串文字?否则我将不得不使用带有三引号的类似 python 的字符串文字(我不想这样做):

string script =
"""
Some
Formatted
String Literal
""";

为什么 C/C++ 字符串文字声明必须是单行的?

最佳答案

简洁的答案是“因为语法禁止多行字符串文字”。除了历史原因,我不知道这是否有充分的理由。

当然,有办法解决这个问题。可以使用线拼接:

const char* script = "\
Some\n\
Formatted\n\
String Literal\n\
";

如果 \ 作为该行的最后一个字符出现,则在预处理过程中将删除换行符。

或者,您可以使用字符串文字连接:

const char* script = 
" Some\n"
" Formatted\n"
" String Literal\n";

在预处理过程中,相邻的字符串文字会被连接起来,因此在编译时这些文字最终会成为单个字符串文字。

使用任何一种技术,字符串文字最终都好像是写出来的:

const char* script = "      Some\n   Formatted\n  String Literal\n";

关于c++ - 为什么 C/C++ 字符串文字声明必须是单行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3093632/

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