c++ - 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();
}
但是保存的文件总是空的。我尝试了很多从列表框保存到文本文件的函数版本,但没有奏效。
解决方案
在您使用的代码中CFileDialog::GetFileName
。这是故意的吗?那只会传入文件名。
我会使用CFileDialog::GetPathName
which 返回文件的完整路径。
你应该使用调试器(在调试模式下编译),这样你就可以遍历你的代码。
该CStdioFile::Open
方法也可以传递一个指向异常对象的指针。看看帮助。
推荐阅读
- html - Nunjucks for 循环运行两次
- r - 如何通过将值分配给不同的时间步来重复值
- angularjs - 为什么在使用 Amplify 部署 Angular 应用程序时刷新时访问被拒绝?
- android - 通过 Firebase Cloud Messaging 发送的令人困惑的有效负载
- pytorch - 如何删除/替换现有模型中的图层?
- node.js - 如何使用 TypeScript 导入语句而不是
在 Web 应用程序(ASP.NET Core)中? - autodesk-forge - 无法提取大文件的元数据属性
- r - 在 R 软件 (Windows 10) 上安装 kb-python 时出现问题
- laravel - 不知道如何摆脱 Illuminate\Queue\MaxAttemptsExceededException
- swiftui - SwiftUI 在初始化时设置状态