ofstream是开放的,但不写

时间:2014-01-11 22:48:43

标签: c++ output fstream ofstream

我正在尝试使用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那样。

有没有人对我忘记的内容有任何见解?

1 个答案:

答案 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()将创建该文件,但它是空的。