代码之家  ›  专栏  ›  技术社区  ›  Mi Po

为什么std::string[]数组的size()函数返回的参数数目不正确[已关闭]

  •  -6
  • Mi Po  · 技术社区  · 6 年前

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

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

    这是使用Visual Studio 2015

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

    谢谢

    Source code and debug screenshot

    2 回复  |  直到 6 年前
        1
  •  2
  •   Cheers and hth. - Alf    6 年前

    不存在原始数组的成员函数。


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


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

        2
  •  2
  •   Robert Andrzejuk    6 年前

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

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

    这么说吧 detectionMethods->length() 与呼叫相同 detectionMethods[0].length()