gpt4 book ai didi

c++ - 为什么 'std::string' 中第一个元素的地址会作为整个字符串打印出来?

转载 作者:行者123 更新时间:2023-11-27 22:46:06 27 4
gpt4 key购买 nike

假设一个字符串的值为“测试字符串”。我试着打印出 &string[0],我得到的是同样的东西,但我期望的是一个“T”。当我尝试打印 &string[1] 时,我得到了“est string”。有人可以解释为什么它以这种方式工作吗?

最佳答案

string[0] 返回字符串的第一个字符。
&string[0] 是第一个字符的地址,类型为 char*,因此当您将其传递给 std::coutprintf()(带 %s),它将打印整个字符串,直到终止\0 字符。

这同样适用于 string[1]

编辑:
但是,正如 Daniel 正确指出的那样,在 C++ 11 之前,这种行为是无法保证的。在这种情况下,您应该使用 std::string::c_str()

关于c++ - 为什么 'std::string' 中第一个元素的地址会作为整个字符串打印出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com