Я пытаюсь создать «fileUpdater», который будет копировать оригинальный файл в несколько каталогов, где ранее был найден файл с тем же именем и расширением.
bool update_files(const string inputPath, const vector<string> outputPaths)
{
ifstream src(inputPath);
if(!src.is_open())
{
cout << "Unable to open input file\n" << inputPath <<endl;
return false;
}
else
{
ofstream dst;
for(unsigned int i=0; i<= outputPaths.size()-1; i++)
{
dst.open(outputPaths[i]);
try
{
dst << src.rdbuf();
dst.close();
}
catch(int e)
{
cout << "Unable to replace file\n" <<endl;
cout << outputPaths[i] <<"\n"<< endl;
cout << "Error code: " <<e<<endl;
}
}
};
src.close();
return true;
}
Точно после выполнения
dst.open(outputPaths[i]);
во второй итерации, исходный файл, открытый
ifstream src(inputPath);
, стирается, и в оставшиеся каталоги копируется только пустой файл.Я также пытался
dst.clear();
dst.close();
и
src.clear();
src.seekg(0,ios::beg);
перед входом в следующую итерацию, но это не имело никакого значения.
ОБНОВЛЕНИЕ После попытки другогофайлы, я понял, поведение зависит от входного файла.Вышеупомянутое поведение появилось для .m-файлов (MatLab).После тестирования с файлами .txt все файлы были стерты.