为什么c++中字符串数组的每个字符串都有相同的大小

Why each string of a string array in C++ has the same size?

本文关键字:字符串 c++ 数组 为什么      更新时间:2023-10-16

我有一个字符串数组,我想知道其中每个组成字符串的长度。所有的字符串都有不同的长度,但是编译器显示它们的长度是相等的。有人能解释为什么会这样吗?下面是代码:

string arr[] = {"ACACACZCZCZC", "LOQWABCB", "PTUTCFEBC"};
int n = sizeof(arr)/sizeof(arr[0]);
cout<<"number of strings is "<<n<<endl;
cout<<"individual size of strings: str1 = "<<sizeof(arr[0])<<", str2 = "<<sizeof(arr[1])<<", str3 = "<<sizeof(arr[2])<<endl;

,这导致所有字符串的大小为8。

sizeof(x)给出对象x的大小。这与对象可能管理的资源大小无关。所有这些都告诉你一个std::string对象由8个字节组成;很可能是两个指针。

如果你想知道字符串的长度,使用字符串的成员函数size:

arr[0].size()

sizeof(arr[0])给出了基于静态类型的std::string 对象的字节大小。

如果想知道对象保存的字符串的长度,使用std::string::size(),如arr[0].size();

sizeof T是一个编译时可求值操作符,返回T类型的大小(以字节为单位)。

返回std::string中包含的字符串的长度。如果你想用size()或者length()