Code Bye

String字符串结尾是'\0'还是'a'

为什么两种输出方式结果会不一样
解决方案

40

C++11标准之前没有规定要不要”\0″,但是本人认为内部没有理由不 以零结尾或不预留结尾零的位置
原因在于c_str()这个函数的调用
这个函数会返回c风格的字符串,是以零结尾的。假如内部不以零结尾或不预留结尾零的位置,那么这个函数的实现会比较低效率,原因是意味着要重新分配更大的缓冲区来盛放数据。
因此(或还有其他原因),主流实现都会以零结尾或预留结尾零的位置。
但是,注意:新的C++标准C++11里面规定std::string一定是以”\0″结尾,就看你的编译器有没有实现新标准了。

20

C++ cout 单独输出”\0″
或 ends 可能会输出a
尤其是 ends
发现这个 ends 输出 a的时候,真的不知道,这个ends 的存在是什么意思了
ends 本意是字符串结束,本人记得

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明String字符串结尾是'\0'还是'a'