理解 STL 字符串中 c_str() 和 data() 的区别
STL 中 c_str() 和 data() 的区别由于不同的实现,字符串经常会引发问题。虽然有些人声称 c_str() 保证空终止而 data() 不保证,但实际行为可能有所不同。
空终止与非空终止
理论上,c_str() 返回一个以 null 结尾的字符串,这意味着它在末尾包含一个额外的 null 字符(相当于 C 中的 ' ')。这对于与期望字符串以这种方式终止的传统 C 函数进行交互至关重要。相反,data() 返回指向底层字符数组的指针,但不一定保证空终止。
实现细节
但是,在实践中,一些实现通过简单地在内部调用 c_str() 来实现 data() 。在这种情况下,两个函数实际上表现相同。请务必查阅具体实现的文档以进行澄清。
何时使用哪个函数
一般来说,经验法则是:
C 11 及以后
从 C 11 开始,引入了标准化更改:现在需要 data()返回一个以 null 结尾的字符串,使其在功能上等同于 c_str()。
以上是什么时候应该对 STL 字符串使用 c_str() 和 data()?的详细内容。更多信息请关注PHP中文网其他相关文章!