这对我来说似乎很简单,但实际上我很难找到任何明确说明这一点的内容。
std::string stringArray[3]
不 创建一个 std::string
对象数组, SomeType typeArray[3]
会吗?实际数量无关紧要;我随便选了 3 个。
在 Visual Studio 2010 调试器中,它似乎创建了一个字符串而不是字符串数组。为什么?
大胆猜测:它是否调用默认的 std::string
构造函数,然后调用未使用的索引 3 访问?如果是这样,为什么这不会导致空字符串出现越界异常?
这是否与重载 []
运算符有关?
有很多方法可以在不专门使用 std::string
数组的情况下编写相同的代码,但没有问题,但是这种行为的解释/理由是什么?这对我来说似乎违反直觉。
编辑:我找到了这个线程 std::string Array Element Access其中对答案的评论似乎观察到相同的行为。
最佳答案
Visual Studio 的调试器通常只会显示数组或指针指向的第一个内容。您必须使用 stringArray[1]
stringArray[2]
等才能看得更远。
关于c++ - VC++2010 似乎只在固定数组中分配一个 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204792/