Офстрим открыт, но не пишет
Я пытаюсь записать данные в файл с использованием 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()
создаст файл, но он останется пустым.