У меня есть следующий код:
ofstream mOutFile.open(logPath, ios_base::app);
string lBuilder;
lBuilder.append("========================================================\n");
lBuilder.append("Date: ");
lBuilder.append(asctime(timeinfo));
lBuilder.append("\n");
lBuilder.append("Log Message:\n");
lBuilder.append(toLog);
lBuilder.append("\n");
lBuilder.append("========================================================\n\n");
int lSize = lBuilder.size();
char* lBuffer = new char[lSize];
int index = 0;
for each (char c in lBuilder)
lBuffer[index++] = c;
mOutFile.write(lBuffer, lSize);
mOutFile.flush();
К сожалению, пока я не закрою приложение (я предполагаю, что закрытие ofstream также будет работать), вывод не записывается в текстовый файл. Я знаю, что мог бы, вероятно, закрыть и снова открыть поток, и все будет «просто работать», но это кажется глупым и неправильным решением. Что я тут не так делаю?
Я также попробовал следующие варианты, основанные на других вопросах, которые я нашел здесь, но эти решения не сработали:
mOutputFile << flush;
mOutputFile << endl;
Заранее благодарим за любую помощь в этом.
edit Все в этом коде работает на Visual C ++, он собирается и работает нормально, за исключением того, что файл не записывается до тех пор, пока поток не будет закрыт, даже если я вызову сброс. Кроме того, я переключился с использования оператора << на char * и .write (), чтобы посмотреть, ведет себя ли что-то по-другому. </p>