为什么字符串使用“\t”而不是“<press TAB>”?
Why use "\t" instead of "<press TAB>" for strings?
我只是尝试编译一些 C++ 代码,这些代码在字符串中使用文字 Tab 字符(就像我按下键盘上的 TAB
键一样)。而且,令我惊讶的是,它编译得很好。回想起来我想这是有道理的,因为它和其他角色一样。
cout << "Tab: [TAB]";
以前我一直使用\t
来定义字符串中的制表符。
cout << "Tab: [\t]";
显然,在字符串中使用文字 TAB
的代码在可读性方面会受到很大影响,但是除了约定之外,是否有使用 \t
的技术原因?
but is there a technical reason to use \t
other than convention?
当然有技术推理。使用
cout << "Tab: [\t]";
将独立于目标系统的实际字符编码工作。
源文件可以使用与目标系统不同的编码,例如源代码为 UTF8,但目标系统为 EBCDIC。
'\t'
将始终被转换为正确的字符代码,因此该代码是可移植的。
也如 merlin2011's 中所述,许多 IDE 只会用特定数量的空格替换 TAB
。
我只是尝试编译一些 C++ 代码,这些代码在字符串中使用文字 Tab 字符(就像我按下键盘上的 TAB
键一样)。而且,令我惊讶的是,它编译得很好。回想起来我想这是有道理的,因为它和其他角色一样。
cout << "Tab: [TAB]";
以前我一直使用\t
来定义字符串中的制表符。
cout << "Tab: [\t]";
显然,在字符串中使用文字 TAB
的代码在可读性方面会受到很大影响,但是除了约定之外,是否有使用 \t
的技术原因?
but is there a technical reason to use
\t
other than convention?
当然有技术推理。使用
cout << "Tab: [\t]";
将独立于目标系统的实际字符编码工作。
源文件可以使用与目标系统不同的编码,例如源代码为 UTF8,但目标系统为 EBCDIC。
'\t'
将始终被转换为正确的字符代码,因此该代码是可移植的。
也如 merlin2011's TAB
。