在C和C++(以及其他几种语言)中,字符和字符串常量中的水平制表符(ASCII代码9)以转义形式表示为'\t'和"\t".不过,我经常键入字符串文字例如在转义字符制表"A B"(存在王全凯一个TAB A和B),以及至少铛++似乎不打扰-字符串似乎等同于"A\tB".我更喜欢未转义的版本,因为长缩进的多行字符串在源代码中更易读.
现在我问自己这在C和C++中是否通常是合法的,或者只是由我的编译器支持.非字符表制表符在字符和字符串常量中的可移植性如何?
令人惊讶的是,我无法找到这个看似简单的问题的答案,无论是Google还是stackoverflow(我刚发现这个含糊不清的相关问题).
我只是尝试编译一些C++代码,这些代码TAB在字符串中使用了文字Tab字符(如我在键盘上按下键).令我惊讶的是,它汇编得很好.回想起来,我认为这是有道理的,因为它是一个像其他任何人一样的角色.
cout << "Tab: [TAB]";
Run Code Online (Sandbox Code Playgroud)
在此之前,我总是习惯\t在字符串中定义标签.
cout << "Tab: [\t]";
Run Code Online (Sandbox Code Playgroud)
显然,TAB在字符串中使用字面值的代码在可读性方面会受到很大的影响,但是\t除了约定之外还有其它技术原因吗?