c++ - VC++2010 似乎只在固定数组中分配一个 std::string

标签 c++ arrays visual-studio-2010 stdstring declare

这对我来说似乎很简单,但实际上我很难找到任何明确说明这一点的内容。

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/

相关文章:

c++ - C++ 中的数组 - 添加数组元素

visual-studio-2010 - 在项目模板中使用本地 IWizard 程序集作为 WizardExtension

mysql - 在 VB 2010 中将数据绑定(bind)组合框数据转换为 Proper Case

c++ - 访问被参数隐藏的数据成员

c++ - Libfaketime Linux 3.1.0?

c++ - 异步输入输出/获取前缀后的输入

c# - 卸载 MS Word 插件

c++ - 转发声明问题

c - 循环似乎在到达 C 中的空字符之前终止

java - 使用 System.nanoTime() 对不同长度的插入排序进行计时