提前感谢您的任何帮助。
我已经有一段时间了,
#include <iostream>
#include <string>
using namespace std;
void InputData(string PlayerName, string Score);
int x = 0;
int main()
{
string PlayerName[100];
string Score[100];
InputData("PlayerName","Score");
}
//input the player name and score into the arrays for an unknown number of players
void InputData(string PlayerName, string Score){
do{
cout << "Enter Player Name (Q to quit): ";
getline(cin, PlayerName);
cout << "Enter Score for " << PlayerName[x] << ": ";
getline(cin, Score);
x++;
}while(PlayerName[x] != 'Q');
cout << "Name \n Score" << endl;
cout << PlayerName[0] << "\n" << Score[0];
}
特别是:
cout << "Enter Player Name (Q to quit): ";
getline(cin, PlayerName);
cout << "Enter Score for " << PlayerName[x] << ": ";
getline(cin, Score);
x++;
}while(PlayerName[x] != 'Q');
为什么Playername只给我第一个字符,为什么当我点击Q时,它不会退出。另外,我不确定如何在另一个函数中正确输出它,因为数组设置为&#34;高达100&#34;。我必须在另一个变量中做。
答案 0 :(得分:1)
void InputData(string PlayerName, string Score)
在InputData
内,PlayerName
和Score
是单个string
个对象 - 而不是数组。如果您执行PlayerName[x]
,则表示您正在访问字符串x
的{{1}}字符。
对于如何将PlayerName
中声明的数组传递给函数,显然存在一些混淆:
main
在这里,您声明两个数组,然后不对它们执行任何操作。相反,您将字符串int main()
{
string PlayerName[100];
string Score[100];
InputData("PlayerName","Score");
}
和"PlayerName"
传递给"Score"
。我很确定这不是你想要的!相反,您希望传递数组InputData
和PlayerName
。但是,这意味着您需要修复Score
函数的参数类型:
InputData
现在你可以将你的数组传递给这个函数了(好吧,不是技术上的,但我不想让你迷惑)。现在尝试修复其余的代码。请注意,您现在需要使用void InputData(string PlayerName[], string Score[])
为x
和PlayerName
数组编制索引(并且您应该将Score
设为局部变量。)
答案 1 :(得分:0)
这里发生的是你正在递增x然后检查条件:while(PlayerName[x] != "Q");
x
现在指向下一个位置。因此,您无法获得所需的结果。
do{
cout << "Enter Player Name (Q to quit): ";
getline(cin, PlayerName[x]);
cout << "Enter Score for " << PlayerName[x] << ": ";
getline(cin, Score[x]);
if (PlayerName[x] != "Q")
x++;
}while(PlayerName[x] != "Q");
例如,您可以检查if (PlayerName[x] != "Q") { ++x; }
或者在得到“问题”后立即break
{Q}作为玩家名称,以防止在您明确想要退出时输入分数。
此外,如果您想要浏览数组,请将其传递给函数,最好通过引用:
void InputData(string (&PlayerName)[100], string (&Score)[100]);