假设有一场比赛,我们有x个种族,还有y个参赛者。每场比赛,每个参赛者都会得到0到10之间的分数。所以有一个文件,看起来像这样(当然没有点):
- 切特 10 凯蒂 8 马克 3 瑞秋 5
- 切特 3 凯蒂 9 马克 6 瑞秋 8
- 切特 6 凯蒂 6 马克 7 瑞秋 0
我的问题是这里的字符串和整数是交替的,我不知道如何将它们放入多维数组中。
以下是如果文件中只有整数,我将如何做到这一点。是否可以修改它,以便我可以在我的程序中使用它?
string x;
int score,row=0,column=0;
int marray[10][10] = {{0}};
string filename;
ifstream fileIN;
cout<<"Type in the name of the file!"<<endl;
cin>> filename;
fileIN.open(filename);
while(fileIN.good()) //reading the data file
{
while(getline(fileIN, x))
{
istringstream stream(x);
column=0;
while(stream >> score)
{
marray[row][column] = score;
column++;
}
row++;
}
}
数组(甚至是多维数组)是同类的,所有条目必须是同一类型。此属性允许 CPU 通过简单的置换操作计算数组任何条目的地址。
在您的情况下,您希望存储字符串和整数。因此,您可以简单地使用结构作为数组的入口。
struct Result {
Result() : point(0)
{}
std::string contestantName;
unsigned int point;
};
Result results[10][10];
其余代码与您编写的代码非常相似。