是:"std :: string可以设计'\ 0'字符"吗?

Let*_*_Be 7 c++ standards

实际上std::string可以容纳'\0'角色的事实总是会出现.这当然与C风格的字符串不一致.

所以我想知道,这是设计,还是遗漏,还是只是标准不禁止它,编译器允许这种情况发生?

pmr*_*pmr 12

我想知道你的争吵是什么.'\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它要求其参数为NULL终止.所以,是的,如果你试图构造一个std::stringconst char*它需要被null终止.