ofstream创建文件但不在C ++中写入

时间:2016-05-04 17:23:28

标签: c++ mfc ofstream

我正在编写一个MFC程序,其中包含一个带有“导出”按钮的对话框,该按钮将获取已输入文件的所有数据并将其导出到.txt(在某些时候我想将此更改为一个.msg文件......但那是另一天的问题。)

但是,当我单击按钮时,它会创建文件,但不会在文件中写入任何内容。为了测试,除了一个简单的文字字符串,我删除了所有内容,甚至不打印。以下是该事件的当前代码:myfile.flush()语句是从我尝试打印到文件的循环时剩下的。

void CEHDAHTTimerDlg::OnBnClickedExport()
{
    // in this function, we want to export the items to a text file
    std::ofstream myfile("TodayTime.txt");
    myfile.open("TodayTime.txt");
    if (myfile.is_open())
    {
        myfile << "The average call time is ";
        myfile.flush();
        myfile.close();
    }
    else
    {
        SetDlgItemText(IDC_EXPORT, L"Export Unsuccessful! --     No File");
    }
}

你能想到的有什么可能导致这种情况吗?我已经花了几个小时尝试不同的东西,比如使用myfile.write()函数。我在这里搜索了很多,reddit和谷歌一般试图找出为什么这不写。

感谢您的帮助。

编辑:

好的,按照我的方式调用myfile构造函数,通过包含文件名,继续执行打开文件会做什么

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

以下是解释:

  1. myfile.open("TodayTime.txt");的调用将失败,因为该流已与文件关联,设置了failbit。
  2. 当文件打开时,对is_open()的调用将成功。
  3. 然后对流媒体运营商<<的调用将失败(因为失败位)。

答案 1 :(得分:1)

评论多余的&#34; open&#34;解决了它。

#include <iostream>
#include <fstream>

int main()
{
    // in this function, we want to export the items to a text file
    std::ofstream myfile("TodayTime.txt");
//    myfile.open("TodayTime.txt");
    if (myfile.is_open())
    {
        myfile << "The average call time is ";
        myfile.flush();
        myfile.close();
    }
    else
    {
        std::cerr << "didn't write" << std::endl;
    }
}

我强烈怀疑您通过打开和已打开的流来调用未定义的行为。

答案 2 :(得分:0)

这是因为myfile << "The average call time is ";不起作用 修复

std::ofstream myfile;
myfile.open("TodayTime.txt",std::ios:app) //app for appending you can use trunc for
  //truncating file 
  //for flushing content's of existing file use myfile.flush();
if (!data_pack.is_open())
{
    std::cerr << "unable to open the file for writing";
}

 myfile << "some stuff tho write you can replace the string with variable"
  <<std::endl; //for next line
  //at last close file
   myfile.close();