我正在尝试让用户使用带有数组和cin的while循环输入他们的名字,但在输入最后一个人的名字之后,程序崩溃而不是继续前进。有没有办法解决这个问题,还是我需要彻底改变代码?我也是c ++的新手,所以可以尽可能简单地给出答案吗?
#include <iostream>
#include <string>
using namespace std;
int main()
{
unsigned int numberofplayers;
number://loop back here if more than 4 players
cout << "Number of players: ";
cin >> numberofplayers;
if(numberofplayers > 4 || numberofplayers < 1){
cout << "Invalid number, please enter a number from 1 to 4." << endl;
goto number;
}
string name[numberofplayers];
cout << "Enter your name" << endl;
int a = 1;
while(a < numberofplayers + 1){
cout << "Player " << a << ": ";
cin >> name[a];
cout << "Hello, " << name[a] << "." << endl;
a++;
}
}
答案 0 :(得分:3)
您可能会面对数组索引超出绑定,因此将循环更改为此并将a=0
设置为从第0个索引填充。
while(a < numberofplayers){
}
答案 1 :(得分:2)
您的上一次迭代超出了数组的大小。您需要将其更改为
while(a < numberofplayers)
另外,另一方面,关键字goto不再使用了很多。我建议使用一段时间也喜欢
while(true){
cout<<"number of players";
cin>>numberofplayers
if(numberofplayers is valid input){
break;
}
cout<<"bad input";
}
有一个关于stackoverflow的问题,在这里广泛讨论goto的使用: GOTO still considered harmful?