我有一组 101 个.dat
格式的文件(全部包含在同一目录中),具有递归名称:smth_0.00.dat, smth_0.02.dat, smth_0.04.dat
等。它们由两组数据组成:两列浮点数。我需要从每个文件中提取第 n 行数据并对其进行处理并对所有 n 行重复此操作,以获得 n 个不同的值。
我的问题是:
- 创建/使用正确的字符串流递归地创建正确的 100 个文件名
- 打开它
- 找到一种聪明的方法来选择(在每个文件中)第 n 行,而不必进行 for 循环来读取整个列
我试图在stackoverflow上结合其他问题的信息,这就是我想出的:
using namespace std;
int main ()
{
const int tot = 101 ;
std::string make_output_filename(size_t index) {
std::istringstream ss;
ss << "/filename_" << index << ".dat";
return ss.str();
}
for (size_t n=0; n < tot; n++ ) {
size_t i = n * 0.02 ;
FILE *file = fopen(make_output_filename(i).c_str(), "r");
cout << file << endl ;
fclose(file);
}
}
如您所见,目前我只是通过在屏幕上打印代码来验证代码是否创建了正确的文件名。然后打开只是使用的问题
ifstream in;
in.open("filename_0.00.dat");
但是,如果我尝试编译它,我会收到两条错误消息:
get_from_file4.cpp: In function ‘int main()’:
get_from_file4.cpp:12: error: a function-definition is not allowed here before ‘{’ token
get_from_file4.cpp:21: error: ‘make_output_filename’ was not declared in this scope
有人可以帮我摆脱这个问题吗?