I apologize if this question is too basic. I am trying to read and write 12 files repeatedly through fstream. It's to measure the time it takes and average it out. but I seem to have a problem with resetting the EOF here. I have tried clear() and seekg(0) but had no luck. Any input is appreciated: // From https://stackoverflow.com/a/11564931
// From https://stackoverflow.com/a/11564931
#define _CRT_SECURE_NO_WARNINGS
#include <fstream>
#include <chrono>
#include <vector>
#include <cstdint>
#include <numeric>
#include <random>
#include <algorithm>
#include <iostream>
#include <cassert>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
long long fileCopy(ifstream & input,ofstream & output)
{
char c;
string line;
auto startTime = std::chrono::high_resolution_clock::now();
if (input.is_open() && output.is_open())
{
while (!input.eof())
{
getline(input, line);
output << line << endl;
}
}
else
{
cout << "Unable to open input or output file\n";
}
input.clear();
input.seekg(0,ios::beg);
output.clear();
output.seekp( 0 );
input.close();
output.close();
auto endTime = std::chrono::high_resolution_clock::now();
return chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count();
}
int main()
{
long long totalTime = 0.0;
ifstream inputFile ("input.txt" );
ifstream inputFile1 ("input1.txt" );
ifstream inputFile2 ("input2.txt" );
ifstream inputFile3 ("input3.txt" );
ifstream inputFile4 ("input4.txt" );
ifstream inputFile5 ("input5.txt" );
ifstream inputFile6 ("input6.txt" );
ifstream inputFile7 ("input7.txt" );
ifstream inputFile8 ("input8.txt" );
ifstream inputFile9 ("input9.txt" );
ifstream inputFile10 ("input10.txt" );
ifstream inputFile11 ("input11.txt" );
ifstream inputFile12 ("input12.txt" );
ofstream outputFile("output.txt");
ofstream outputFile1("output1.txt");
ofstream outputFile2("output2.txt");
ofstream outputFile3("output3.txt");
ofstream outputFile4("output4.txt");
ofstream outputFile5("output5.txt");
ofstream outputFile6("output6.txt");
ofstream outputFile7("output7.txt");
ofstream outputFile8("output8.txt");
ofstream outputFile9("output9.txt");
ofstream outputFile10("output10.txt");
ofstream outputFile11("output11.txt");
ofstream outputFile12("output12.txt");
//1000 times doing small size read and write
for (size_t i = 0; i < 1000; i++)
{
totalTime += fileCopy(inputFile1,outputFile1);
totalTime += fileCopy(inputFile2,outputFile2);
totalTime += fileCopy(inputFile3,outputFile3);
totalTime += fileCopy(inputFile4,outputFile4);
totalTime += fileCopy(inputFile5,outputFile5);
totalTime += fileCopy(inputFile6,outputFile6);
totalTime += fileCopy(inputFile7,outputFile7);
totalTime += fileCopy(inputFile8,outputFile8);
totalTime += fileCopy(inputFile9,outputFile9);
totalTime += fileCopy(inputFile10,outputFile10);
totalTime += fileCopy(inputFile11,outputFile11);
totalTime += fileCopy(inputFile12,outputFile12);
}
//cout<< "The big file copy timing is "<< fileCopy(inputFile,outputFile) << " ms " << endl;
cout<< "Total time to do 1000 times copying the 12 small files is "<< totalTime << " ms " << endl;
return 0;
}
I have tried input.clear() and input.seekg(0) and output.clear() and output.seekp(0). No luck.