c++ - 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];
}
解决方案
我有一个可变大小的字符数组
char arr_1[] = {};
C ++中没有“可变大小的数组”之类的东西。数组的大小永远不会改变。此外,非动态数组的大小必须是编译时常量。你所声明的是一个大小为零的数组。大小为零的非动态数组是格式错误的。
如果编译器由于某种原因未能发现错误(也许它支持零长度数组作为语言扩展),那么您最终会访问边界之外的数组。越界访问数组的行为是未定义的。无限循环是未定义行为的一个例子。
然而,当您将元素插入其中时,有一个标准容器会自动重新分配一个逐渐变大的数组:std::vector
.
虽然,由于您正在处理字符,因此也许它们应该代表一个字符串。为此目的有一个特殊的容器:std::string
.
推荐阅读
- c++ - 递归如何获得先前的值?
- c++ - C++ 如何在 MFC 中打开 .docx 文件
- android - 屏幕开启后的 Android 视图可见性
- java - 将数据写入 OutputStream 而不用 CLDC 关闭
- c - 如何计算C中相同字符的数量?
- javascript - 如何将值从服务传递到组件的方法
- python - 使用 numpy、openCV 和 python 自定义灰度图像
- python - Messenger webhook - 无法验证 URL - Python
- javascript - 如何在 Apache Web 服务器上从 Javascript 运行 Python 脚本?
- php - 如何将最低索引值分配给最新行或以相反的顺序排序