我有一个包含 15 列和 1000 多行值的文件。
45285785.00 45285797.00 45285776.00 45285795.00 45285785.00 45285803.00 45285769.00 45285773.00 45285771.00 45285795.00 45285771.00 45285798.00 45285796.00 45285797.00 45285753.00
35497405.00 35497437.00 35497423.00 35497465.00 35497463.00 35497468.00 35497437.00 35497481.00 35497417.00 35497479.00 35497469.00 35497454.00 35497442.00 35497467.00 35497482.00
46598490.00 46598483.00 46598460.00 46598505.00 46598481.00 46598480.00 46598477.00 46598485.00 46598494.00 46598478.00 46598482.00 46598495.00 46598491.00 46598491.00 46598476.00
Run Code Online (Sandbox Code Playgroud)
我想阅读这个文件。我现在的做法是取 15 个变量,然后将它们分别放入向量中。
double col1, col2, ... , col15;
vector <double> C1, C2, ..., C15;
ifstream input('file');
while(input >> col1 >> col2 >> ... >> col15)
{
C1.push_back(col1);
C2.push_back(col2);
...
C15.push_back(col15);
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?我的意思是没有定义 15 个变量,在 while 循环中读取 15 列?
就在这里。
您可以考虑为所有列使用一个容器,例如vector<double> cols(15),也可以C1, C2 ... C15用向量向量替换您的变量。然后你可以轻松地做某事:
for(int i=0; i<cols.size(); ++i) {
input >> cols[i];
C[i].push_back(cols[i]);
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,您不知道什么时候应该停止阅读。要修复它,您可以使用input.eof()或input.good()方法或尝试>>像以前在代码中一样捕获 fstream运算符的返回值。