如何将文件中的字符串和整数放入多维数组中?

时间:2014-04-07 22:09:45

标签: c++ arrays multidimensional-array

让我们说有一场比赛,我们有x场比赛和参赛者。 每场比赛,每位选手都获得0到10分之间的分数。 所以有一个文件,看起来像这样(当然没有点):

  • Chet 10 Katie 8 Mark 3 Rachel 5
  • Chet 3 Katie 9 Mark 6 Rachel 8
  • Chet 6 Katie 6 Mark 7 Rachel 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++;
    }
}

1 个答案:

答案 0 :(得分:2)

数组(甚至是多维数组)是同类的,所有条目必须是同一类型。此属性允许CPU使用简单的置换操作计算数组的任何条目的地址。

在您的情况下,您希望存储字符串和整数。所以你可以简单地使用struct作为数组的入口。

struct Result {
  Result() : point(0)
  {}
  std::string contestantName;
  unsigned int point;
};

Result results[10][10];

其余代码与您所写的内容非常相似。