我有一个这样的文件:
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)做到这一点。
答案 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++;
}