gpt4 book ai didi

c++ - 是否必须在 C 和 C++ 中转义制表符?

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

在 C 和 C++(以及其他几种语言)中,字符和字符串常量中的水平制表符(ASCII 代码 9)以转义形式表示为 '\t'"\t"。但是,我经常在字符串文字中键入未转义的制表符,例如在 "A B" 中(在 AB),至少 clang++ 似乎并不在意——字符串似乎等同于 "A\tB"。我更喜欢未转义的版本,因为长缩进的多行字符串在源代码中可读性更好。

现在我问自己这在 C 和 C++ 中是否通常是合法的,或者只是我的编译器支持。字符和字符串常量中未转义的制表符的可移植性如何?

令人惊讶的是,我在 Google 和 stackoverflow 上都找不到这个看似简单的问题的答案(我刚刚找到 this 模糊相关的问题)。

最佳答案

是的,您可以在字符串或字 rune 字中包含制表符,至少根据 C++11。允许的字符包括(我强调):

any member of the source character set except the double-quote ", backslash \, or new-line character

(来自 C++11 standard,附件 A.2)

源字符集包括:

the space character, the control characters representing horizontal tab, vertical tab, form feed, and new-line, plus the following 91 graphical characters

(来自 C++11 standard,第 2.3.1 段)

更新:我刚刚注意到您询问的是两种不同的语言。对于C99,答案也是肯定的。措辞不同,但基本上都是一样的:

In a character constant or string literal, members of the execution character set shall be represented by corresponding members of the source character set or [...]

源字符集和执行字符集都包括

control characters representing horizontal tab, vertical tab, and form feed.

关于c++ - 是否必须在 C 和 C++ 中转义制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28900842/

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