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

时间:2017-03-09 11:33:03

标签: c++

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

1 个答案:

答案 0 :(得分:4)

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

同样适用于string[1]等。

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