c++编译器如何将转义序列转换为实际字节
how does c++ compiler convert escape sequence to actual bytes?
GCC编译器提供了一个编译器选项(-fexec-charset=option),因此您可以配置字符和字符串文字的编码,因此它将您的字符串从源字符集(默认为UTF-8)转换为执行字符集。
所以我想知道是从源字符集到执行字符集的这种转换导致转义序列被其相应的代码点所取代吗?
东西。
cout << "hello x60 "; // x60 replaced by byte 0x60
cout << "hello n"; // n replaced by 0xA0
x60
是编码独立的,而在第二个例子中,这个字符'n'字节表示是编码相关的,也是平台相关的(它将在windows中变为rn,在UNIX中保持n)。虽然你显然没有意识到这一点,但你实际上是在询问两个完全独立的转换。
第一个是在编译器中转换转义序列。这很简单——当它在(例如)一个字符串中看到时,它会查看下一个字符并为这两个字符产生一个字节的输出(或者,取决于确切的输入,它可能是从两个以上的输入字符中产生一个字节的输出,例如