【发布时间】:2013-01-26 16:54:14
【问题描述】:
所以我和我的队友突然手头有一些离合器。我被分配了一个导入函数,该函数读取一个看起来像这样的文本文件,并将其存储到一个二维数组中:
列是制表符分隔的。由于这突然出现,我没有完整的项目文件,而且我离我的旧可信赖者还很远,我尝试以最通用的方式将其变出:
void signal::import_data(string filename){
ifstream file;
file.open(filename.c_str());
if(file.fail()){
cerr << "file open fail" << endl;
}else{
while(!file.eof)
{
for(int j = 0; j < NumCols; j++){
for(int i = 0; i < NumRows; i++){
file >> _data[j][i];
}
}
}
}
file.close();
}
我这样做对吗?我不太确定这样的流媒体是否可以绕过标签,或者可以吗?
【问题讨论】:
-
避免这种情况:
while(!file.eof),读作if ( !(file >> _data[j][i])) break; -
明白!但是其余的代码还好吗?还有,说实话?我真的不知道为什么 while(!file.eof) 是一个可行的选择,只是想知道你能不能告诉我为什么
-
@Erasmus:我相信你应该避免
while (!file.eof()),因为如果在执行file >> ...时从输入流中读取的令牌无法解析为整数,那么输入迭代器将不会前进。如果是这种情况,您可能永远不会到达文件末尾。
标签: c++ arrays matrix filestream