Моя версия была бы чем-то более похожим на это:
#include <iostream>
#include <fstream>
void function2(bool bWriteConsole)
{
std::ofstream outfile;
if (!bWriteConsole)
outfile.open("./hello.bin", std::ofstream::binary | std::ofstream::out);
double dValue = 1.2345;
// writing out
std::ostream& out = bWriteConsole ? std::cout : outfile;
out.write(reinterpret_cast<char*>(&dValue), sizeof dValue);
out.flush();
}
Написание кода - 2 строки, 3, если вы действительно хотите сбросить.outfile.close()
также будет сбрасывать, так что безусловное сбрасывание не повредит вашему подходу.Файл закроется, когда outfile
выйдет из области видимости, поэтому его не нужно записывать, если вы действительно не хотите вручную закрывать файл перед дальнейшей обработкой.Здесь это излишне (RAII совершенство вступает в игру здесь).
Aa и возможно рефакторинг написание:
template<typename T>
void dump(T val, std::ostream& out ) {
out.write(reinterpret_cast<char*>(&val), sizeof val);
out.flush();
}
void function2(bool bWriteConsole)
{
std::ofstream outfile;
if (!bWriteConsole)
outfile.open("./hello.bin", std::ofstream::binary | std::ofstream::out);
double dValue = 1.2345;
dump(dValue, bWriteConsole ? std::cout : outfile);
// writing out
}