首页 >后端开发 >C++ >`&s[0]` 是否始终指向 C 11 `std::string` 中的连续字符?

`&s[0]` 是否始终指向 C 11 `std::string` 中的连续字符?

Patricia Arquette
Patricia Arquette原创
2024-12-05 05:44:15833浏览

Does `&s[0]` Always Point to Contiguous Characters in a C  11 `std::string`?

“&s[0]”是否始终指向 std::string 中的连续字符?

在维护代码中,一些仓促的阅读可能会导致有关使用“&s[0]”访问 std::string 中的字符的问题。这源于这样的知识:在 C 98/03 下,std::string 的分配不能保证是连续的,这与 std::vector 不同。然而,C 11 已经解决了这种不确定性。

与标准相反,实践经验表明 std::string 的大多数实现确实分配连续存储。尽管如此,C 11 已经明确解决了这个问题,要求 std::string 的分配是连续的。这确保了“&s[0]”始终指向字符串第一个字符的有效引用,即使在字符串为空的情况下也是如此。

虽然“&s[0]”仍然是访问字符串的可靠方法字符,其他方法如“str.begin()”和“&*str.begin()”不能保证在所有标准配置下一致工作。因此,建议使用“&s[0]”直接访问 std::string 的字符。

以上是`&s[0]` 是否始终指向 C 11 `std::string` 中的连续字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn