请求用户输入以命名使用 ofstream C++ MFC 创建的文件

Posted

技术标签:

【中文标题】请求用户输入以命名使用 ofstream C++ MFC 创建的文件【英文标题】:Requesting User Input to Name the File being created using ofstream C++ MFC 【发布时间】:2013-04-21 22:50:15 【问题描述】:

您将如何让用户能够使用 c++ MFC 更改 ofstream 文件的名称。我想添加一个编辑控制框,使用户能够在单击保存之前输入文件名。这是我目前的代码,任何反馈将不胜感激。

void CECET_MFC_Dialog_Based_IntroDlg::OnBnClickedSave()
    
    UpdateData(true);

    ofstream myfile ("Save_Random.xls");
    if (myfile.is_open())
  
    myfile << "This is the 1st line.\n" << endl;

    for(int index=0; index<100; index++)   // samples to create
     myfile << setprecision(4) << dblArray[index] << endl;
    

    myfile << "This is another line.\n";
    myfile << "Max  = " << rndMax << endl;
    myfile << "Min  = " << rndMin << endl;
    myfile << "Mean = " << Final_Avg << endl;
    myfile.close();
  
    else cout << "Unable to open file";

    UpdateData(false);  

【问题讨论】:

【参考方案1】:

您可以像添加任何其他控件一样添加编辑控件——将其从工具箱拖到对话框中。也许更重要的是,您通常希望在它旁边放置一个浏览按钮,以便用户可以浏览他们想要的文件夹/文件名。该按钮的代码如下所示:

void CYourDlg::OnBrowseButton() 
    UpdateData();

    CFileDialog dlg(false, NULL, NULL, OFN_OVERWRITEPROMPT );

    if (dlg.DoModal())
        m_dest_file = dlg.GetPathName();
    UpdateData(false);

然后,当用户单击任何按钮(或菜单项等)让您写入文件时,您执行以下操作:

std::ofstream myfile(m_dest_file);
// write the data

我假设您已将编辑控件与名为 m_dest_fileCString 相关联。显然,您可以选择自己喜欢的名称,但(当然)您需要在两个地方使用相同的名称。

【讨论】:

以上是关于请求用户输入以命名使用 ofstream C++ MFC 创建的文件的主要内容,如果未能解决你的问题,请参考以下文章

C++的ofstream与ifstream使用

Ofstream,使用变量来命名

在 C++ 中将字节写入 ofstream

C++中对文件的操作

C++ ifstream,ofstream读写二进制文件

c++文件