C ++ 11保证std::string
在内部存储nul终结符。如果没有明确的terminate
方法,怎么能实现呢?
示例:
std::string foo("Baz");
printf("foo contains %s\n",&foo[0]); //Completely safe
答案 0 :(得分:4)
标准要求您从data()
获取的字符串已终止,并且需要the references generated from operator[]
are contiguous and NUL terminated。所有规范都说明了这一点。
这样做是实施的工作。通常,这只是在字符串末尾存储NUL终结符,使实际缓冲区大小比显示的大。如果添加字符,它仍会在新附加到字符序列的末尾存储NUL终止符。如果删除字符,它会适当地移动NUL终止符。
这是封装类型可以做的事情。他们可以建立和维护不变量。