gpt4 book ai didi

c++ - 字符串库如何在 C++ 中工作?

转载 作者:行者123 更新时间:2023-11-30 02:04:37 32 4
gpt4 key购买 nike

根据 http://www.cplusplus.com/reference/string/string/ 处的文字,C++中的字符串库是一个类,而不仅仅是“内存数组中的字符序列”。我写了这段代码来了解更多信息:

string s = "abcd";

cout << &s << endl; // This gives an address
cout << s[0] << endl; // This gives 'a'
cout << &s[0] << endl; // This gives "abcd"

我有一些问题:1、C++中的字符串库还是序列字符数组吗?2. 如何获取字符串中每个字符的地址? (在代码中,我可以检索每个字符,但无法使用 & operator 获取其地址)

最佳答案

其中大部分(大部分)与字符串类本身无关。

std::string确实将其内容存储为连续的字符数组。

&s[0]将产生该数组开头的地址 -- but std::ostream过载 operator<<它接受一个指向 char 的指针,并将其打印为字符串。

如果您想查看字符串中各个字符的地址,您需要获取它们的地址,然后将每个地址转换为指向 void 的指针。 std::iostream也有一个重载 operator<<它接受一个指向 void 的指针,那个 重载打印出地址而不是(它假定)位于该地址的字符串。

编辑:演示代码:

#include <iostream>
#include <string>

int main(){
std::string x("this is a string");

std::cout << &x[0] << "\n";
std::cout << (void *)&x[0] << '\n';
return 0;
}

结果:

this is a string
00481DE0

关于c++ - 字符串库如何在 C++ 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392858/

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