如何在 C++ 中获取 std::string 中元素的地址?

How to you get the address of an element in an std::string in C++?

例如,我有以下字符串:

std::string s = "Hello, World!"

我想要s最后一个元素的地址,即'!'

我尝试了以下代码,但它似乎没有输出我想要的结果。

std::cout << &s[s.length() - 1];

输出 '!' 不是地址,s.back()

也是如此

std::cout格式问题还是其他地方的问题?

基本上我想要一个函数输出字符串中最后一个(如果可能的话,第一个)元素的地址

目前,您正在使用 operator<< 的重载,它将 const char* 作为输入。它将输入视为以 null 结尾的 C 字符串。

如果转换为 (const void*),问题就会消失:

std::cout << (const void*)(&s[s.length() - 1]);
auto address_back = &s.back();
auto address_front = &s.front();

cout << static_cast<void*>(address_back) << endl;
cout << static_cast<void*>(address_front) << endl;