标准字符串实现中的 c_str() 与 data()
STL 中 c_str() 和 data() 函数的区别人们普遍认为类似的实现是基于空终止的。据说,c_str() 总是提供一个以 null 结尾的字符串,而 data() 则不然。
但是,在实践中,实现经常通过让 data() 在内部调用 c_str() 来消除这种区别。这可能会导致人们对两个函数之间的实际差异感到困惑。
正确的用法和场景
文档强调指出,当 null 时应使用 c_str()需要以 - 结尾的字符串。如果可接受非空终止字符串,则可以使用 data(),因为它可以在特定实现中提供更好的性能。
超越基于字符的字符串
值得注意的是,C 中的字符串不限于字符数据。它们可以包含任何类型的元素。在这种情况下,data() 变得更有意义,因为它直接访问底层数据,而 c_str() 由于强调基于字符的字符串而不太相关。
C 11 及其他:收敛
在 C 11 及更高版本的标准中,data() 现在需要以 null 终止,使其行为与 c_str() 的行为保持一致。这消除了之前两个函数之间的区别,确保它们执行相同的操作。
以上是标准字符串实现中的 c_str() 和 data() 是否有显着差异?的详细内容。更多信息请关注PHP中文网其他相关文章!