我正在尝试使用ofstream将数据写入文件,但即使流已打开,正在创建文件(文件夹已经创建),还有“endl”或“\ n”s是每一行的结尾,我正在刷新文件,文本不会显示在任何文本编辑器中。
以下是代码的基础:
#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是一个枚举,所以它应该打印出一个整数,就像我以前用cout那样。
有没有人对我忘记的内容有任何见解?
答案 0 :(得分:0)
您正在打开您的信息流两次
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
。
第一个open()
将创建该文件,但它是空的。