【问题标题】:Same value every time when want to get size of array [duplicate]每次想要获取数组大小时都使用相同的值[重复]
【发布时间】:2022-01-10 11:47:23
【问题描述】:
我是 C++ 新手,所以请不要严格评判我。我正在尝试获取数组的大小,但此代码示例始终返回 2。我也只能使用 C++11。有什么问题,我该如何处理?提前谢谢你。
String string = "paris";
char * array = new char [string.length() + 1];
int arraySize = sizeof(array) / sizeof(array[0]);
【问题讨论】:
标签:
c++
arrays
string
c++11
arduino
【解决方案1】:
它返回 2 因为 array 是一个指针,这意味着 sizeof(array) 返回指针的大小,而不是数组。你有 16 位指针吗?
sizeof(array) / sizeof(array[0]); 仅适用于编译时数组。
解决方案是使用std::vector 或std::array。
也使用std::size_t 表示长度,而不是int。
【解决方案2】:
您无法找出使用关键字new(您所做的方式)创建的数组的大小。使用new[] 分配的数组的大小不会以任何方式存储,以便以后访问。
您应该改用std::vector,它为您存储length。
std::string string = "paris";
std::vector<char> myVec(string.length() + 1); //creates vector of size string.length() + 1
int arraySize = myVec.size();