首页 > 解决方案 > c ++输入int后的char输入数组

问题描述

我有一个从用户输入接收到的可变大小的字符数组。从那里我根据大小输入带有for循环的数组,但似乎保持大小的变量正在改变,我陷入了无限循环。

char arr_1[] = {};
int array_size;

cout << "Array size: ";
cin >> array_size;
for (int i = 0; i < array_size; i++)
{
  cout << "Input: ";
  cin >> arr_1[i];
}

标签: c++

解决方案


我有一个可变大小的字符数组

char arr_1[] = {};

C ++中没有“可变大小的数组”之类的东西。数组的大小永远不会改变。此外,非动态数组的大小必须是编译时常量。你所声明的是一个大小为零的数组。大小为零的非动态数组是格式错误的。

如果编译器由于某种原因未能发现错误(也许它支持零长度数组作为语言扩展),那么您最终会访问边界之外的数组。越界访问数组的行为是未定义的。无限循环是未定义行为的一个例子。

然而,当您将元素插入其中时,有一个标准容器会自动重新分配一个逐渐变大的数组:std::vector.

虽然,由于您正在处理字符,因此也许它们应该代表一个字符串。为此目的有一个特殊的容器:std::string.


推荐阅读