将文件中的整数读入数组

时间:2014-01-19 19:25:43

标签: c++

我有一个这样的文件:

1 20 42 45 ...(74 integers)
2 43 41 92 ...(74 integers)

共有74行74个整数,每个整数用空格分隔。

以下代码对我不起作用:

#define NUM 74
int info[NUM][NUM] = {0};
std::ifstream file("file.txt");
std::string line;
int i = 0, j;

while(std::getline(file, line)){
    for(j=0; j<NUM; j++){
        std::istringstream(line) >> info[i][j];
    }
    i++;
}

此代码仅将每行的第一个值存储到info [i]的74列中的每一列中。 我知道如果我有一个说明每行2个整数的列表,我可以使用:     std :: istringstream(line)&gt;&gt; info [i] [0]&gt;&gt;信息[I] [1] 但我不知道如何为大量整数(如74)做到这一点。

3 个答案:

答案 0 :(得分:4)

为内循环外的每一行创建std::istringstream,并在内循环内重复使用。

while(std::getline(file, line)){
    std::istringstream line_stream(line);
    for(j=0; j<NUM; j++){
         line_stream >> info[i][j];
    }
    i++;
}

答案 1 :(得分:2)

由于你已经知道你读了整数,你可以使用这样的格式化输入:

std::ifstream in("text.txt");
int values[74][74];

for (int i = 0; i < 74; ++i)
    for (int j = 0; j < 74; ++j)
        in >> values[i][j];

答案 2 :(得分:1)

我已经想出了怎么做。

需要像这样改变while循环:

while(std::getline(file,line)){
    std::istringstream iss(line);
    int val;
    j = 0;
    while(iss >> val){
        info[i][j] = val;
        j++;
    }
    i++;
}