如何暂停for cicle(循环)以在Array中插入一些值?

Fro*_*her -1 c++ arrays for-loop cin

我想要的是在用户在数组中插入名称时保持FOR循环.

#include <iostream>

using namespace std;
char nomes[]={};
int numpessoas;
int main() {
    cout << "Quantas pessoas queres registar?\n";
    pede:
    cin >> numpessoas;
    if (numpessoas < 1) {
        goto pede;
    }
    else {
        for (int i = 1; i<= numpessoas; i++){
            cout << i << "º nome\n";
            cin << nomes[i];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 7

首先,这个术语不是"圆圈",而是"循环",你有一个"for循环".

其次,您声明nomes尝试声明一个大小为零的数组.这在普通的C++中是不允许的,应该给你一个编译错误.然而,它是某些编译器的扩展.问题在于,当您尝试分配此零大小数组中的条目时,您会有未定义的行为,因为所有赋值都将在数组边界外写入.

第三,阵列从零到size-1个索引,所以要么你必须改变你的for循环,从数0i< numpessoas,或者你必须使用i - 1索引数组时.

您也使用错误的运算符作为输入,<<输出运算符.由于您使用了错误的运算符(您没有收到错误或至少出现此错误的警告?)循环不会停止等待输入.


由于您使用C++编程,我强烈建议您使用std::vector.