У меня есть следующий код:C++ - ofstream не выводятся в файл, пока не закроете программу
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;
Заранее спасибо за любую помощь по этому вопросу.
Редактировать Все в этом коде работает на Visual C++, оно строит и отлично работает, за исключением того, что файл не записывается до тех пор, пока поток не будет закрыт, даже если я заставлю флеш. Кроме того, я переключился с использования оператора < < на char * и .write(), чтобы увидеть, что-то по-другому.
Зачем нужен синтаксис: 'для каждого (char c в lBuilder)'. Это недействительно C++. –
Есть ли причина, по которой вы не используете << для записи строк в файл? – ebutusov
'для каждого' кажется C# ism. Также попробуйте закрыть дескриптор файла после его очистки и посмотреть, помогает ли это. –