如何在 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;
例如,我有以下字符串:
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;