首页 > 解决方案 > MFC 序列化 C++

问题描述

我正在尝试序列化 MFC 中的列表框。

我使用了这段代码:

CFileDialog fileDlg(FALSE, _T(".txt"), NULL, 0, _T("Text File (.txt)|*.txt|")
        _T("All files (*.*)|*.*||"));

    if (fileDlg.DoModal() == IDOK)
    {
        const int numItems = m_listBox.GetCount();
        CString itemText;
        CStdioFile file;

        if (file.Open(fileDlg.GetFileName(), CStdioFile::modeCreate | CStdioFile::modeWrite))
        {
            for (int i = 0; i < numItems; ++i)
            {
                m_listBox.GetText(i, itemText);
                file.WriteString(itemText);
                file.WriteString(_T("\n"));
            }

            file.Close();
        }

但是保存的文件总是空的。我尝试了很多从列表框保存到文本文件的函数版本,但没有奏效。

标签: c++serializationmfc

解决方案


在您使用的代码中CFileDialog::GetFileName。这是故意的吗?那只会传入文件

我会使用CFileDialog::GetPathNamewhich 返回文件的完整路径

你应该使用调试器(在调试模式下编译),这样你就可以遍历你的代码。

CStdioFile::Open方法也可以传递一个指向异常对象的指针。看看帮助。


推荐阅读