Офстрим открыт, но не пишет

Я пытаюсь записать данные в файл с использованием ofstream, но даже если поток открыт, файлы создаются (папка уже создана), существуют "endl" или "\n" конец каждой строки, и я очищаю файл, текст не отображается ни в одном текстовом редакторе.

Вот основа кода:

#include <iostream>
#include <sstream>
#include <fstream>

int main(int argc, char ** argv) {    

  ofstream outputData;
  stringstream stringFix;
  char fileBase[150] = "./Output/outputData";
  stringFix << time(NULL) << ".txt";
  outputData.open(strcat(fileBase, stringFix.str().c_str()));

  outputData.open(fileBase);

  assert(outputData.is_open());

  while (...) {
    //Some data is written to the stream, similar in format to:
    outputData << "Trump: " << trumpSuit << endl;
  }

  outputData.flush();
  outputData.close();

  cout << "Should have written successfully..." << endl;

}

Я, казалось бы, попробовал каждый вариант - как со сбросом, так и без, с "endl" и "\n"s... Для справки, trumpSuit - это enum, и поэтому он должен вывести целое число, как и ранее сделал, когда я использовал Cout.

У кого-нибудь есть понимание того, что я забываю?

1 ответ

Решение

Вы открываете свой поток дважды

char fileBase[150] = "./Output/outputData";
stringFix << time(NULL) << ".txt";
outputData.open(strcat(fileBase, stringFix.str().c_str()));

outputData.open(fileBase); // <<<<< second open here

Все операции записи будут выводиться в файл с именем ./Output/outputData и не ./Output/outputData.txt как я полагаю, вы ожидали.

1-й open() создаст файл, но он останется пустым.

Другие вопросы по тегам