gpt4 book ai didi

c++ - 原始字符串文字中的回车符+换行符?

转载 作者:行者123 更新时间:2023-12-02 03:08:50 27 4
gpt4 key购买 nike

考虑一个具有 UNIX 行结尾的 C++ 文件(即 '\x0a' 而不是 "\x0d\x0a")并包含以下原始字符串文字:

const char foo[] = R"(hello^M
)";

(其中 ^M 是实际字节 0x0d(即回车符))。

以下字符串比较的结果应该是什么(考虑原始字符串文字的标准定义)?

strcmp("hello\r\n", foo);

字符串比较是否应该相等? (即 0!=0 ?)

与 GCC 4.8(在 Fedora 19 上)相比,它们是不平等的。

这是 GCC 中的错误还是功能?

最佳答案

就标准而言,您只能在字符串文字(以及程序中的其他位置)中使用基本源字符集的成员。程序的物理表示如何映射到基本源字符集是实现定义的。

g++ 显然认为 ASCII \x0A、ASCII \x0D 和 ASCII \x0D\x0A 都是 成员的有效表示基本源字符集称为“换行符”。这是完全合理的,因为希望在 Windows、Unix 和 Mac OS X Classic 机器之间传输源代码以保持其含义。

关于c++ - 原始字符串文字中的回车符+换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22878093/

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