gpt4 book ai didi

c++ - 是: "std::string can hold '\0' character" by design?

转载 作者:可可西里 更新时间:2023-11-01 18:15:11 25 4
gpt4 key购买 nike

std::string 实际上可以容纳 '\0' 字符这一事实一直都在出现。这当然与 C 风格的字符串不一致。

所以我想知道,这是设计使然,还是遗漏,或者仅仅是标准不禁止它而编译器允许这种情况发生的事实?

最佳答案

我想知道你的争吵是什么。 '\0' 只是另一个字符。没有有效的方法可以在通用“char”字符串中禁止它。不幸的是,同一字符在 C 语言中具有特殊含义,但必须处理遗留代码在与它进行互操作时施加的每个限制。

只要您坚持使用专门使用 std::string 的代码,这应该不是问题。

为了解决您的意见,我们需要查看采用 char* 的构造函数,它将是 basic_string(const charT* s, const Allocator& a = Allocator())21.4.2 9/10 中,在 n3242 中。它说内部字符串的大小是通过 traits::length(s) 确定的,在 std::string 的情况下是 strlen 要求其参数以空值终止。所以是的,如果您尝试从 const char* 构造一个 std::string,它需要以 null 终止。

关于c++ - 是: "std::string can hold '\0' character" by design?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416539/

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