为什么 std::string[] 数组的 size() 函数返回错误数量的参数

Why is size() function of std::string[] array returning an incorrect number of parameters

这是一个简单的两行问题,我只是不明白。

我刚刚创建了一个包含 3 个成员的数组,然后立即报告大小为 6。之前它可以正常工作,但突然变了。我尝试清理我的项目。

这是使用 Visual Studio 2015

std::string detectionMethods[3] = { "SQUARE", "CIRCLE", "CIRCLE-SSV" };
int k_size = detectionMethods->length();

谢谢,

Source code and debug screenshot

没有原始数组的成员函数这样的东西。


子表达式 detectionMethods 引用原始数组并衰减为指向第一项的指针。剩下的,->length(),调用第一项的成员函数


避免这些问题的一种简单方法是使用 std::vector 而不是原始数组。你的书应该是这样推荐的。

已返回第一个字符串的大小。

原因是作为数组的变量衰减为指向第一个元素的指针。

所以调用detectionMethods->length()和调用detectionMethods[0].length()

是一样的