假设一个字符串的值为“Test string”。我尝试打印出& string [0],我得到的是同样的东西,但我的预期是'T'。当我尝试打印出& string [1]时,我得到了“est string”。有人可以解释为什么它会这样工作吗?
答案 0 :(得分:4)
string[0]
返回字符串中的第一个字符
&string[0]
是第一个字符char*
类型的地址,因此当您将其传递给std::cout
或printf()
(使用%s)时,它会打印整个字符串直到终止\ 0字符。
同样适用于string[1]
等。
编辑:
但是,正如Daniel正确指出的那样,在C ++ 11之前,这种行为并不能得到保证。在这种情况下,您应该使用std::string::c_str()
。