首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态分配CFile类型的变量?(C++,CFile,new)

如何动态分配CFile类型的变量?(C++,CFile,new)
EN

Stack Overflow用户
提问于 2015-04-25 06:42:05
回答 1查看 287关注 0票数 0
代码语言:javascript
复制
static TCHAR BASED_CODE szFilter[] = _T("YUV Files|*.yuv|")
CFileDialog fileDlg(TRUE, _T("yuv"), _T("bus.yuv"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilter);
if (fileDlg.DoModal() == IDOK)
{
    CString pathName = fileDlg.GetPathName();
    CFile* pImgFile = NULL;
    pImgFile = new CFile(pathName, CFile::modeRead || CFile::typeBinary);
}

我指的是以下网站中的一个示例。https://msdn.microsoft.com/en-us/library/b569d0t4.aspx

代码语言:javascript
复制
static TCHAR BASED_CODE szFilter[] = _T("YUV Files|*.yuv|")
CFileDialog fileDlg(TRUE, _T("yuv"), _T("bus.yuv"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilter);
if (fileDlg.DoModal() == IDOK)
{
    CString pathName = fileDlg.GetPathName();
    CFile imgFile;
    CFileException e;
    if (!imgFile.Open(pathName, CFile::modeRead || CFile::typeBinary, &e))
    {
        TRACE(_T("File could not be opened %d\n"), e.m_cause);
    }
}

我指的是以下站点中的第一个示例。https://msdn.microsoft.com/en-us/library/hwbccf8z.aspx

我在第二个代码中使用了CFile的方法Open。

对于上面的代码,我如何打开文件?

当我使用动态分配时,它会自动打开文件吗?

代码语言:javascript
复制
imgLength = pImgFile->GetLength();
CString str;
str.Format(_T("Your SYSTEM.INI file is %I64u bytes long."), imgLength);
AfxMessageBox(str); 

我试图将这个代码附加到第一个代码中。

它没有任何问题,我认为变量pImgFile很好地指出了文件的地址。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-25 06:49:21

通常,不需要在堆上创建CFileCFile有几个构造函数

代码语言:javascript
复制
CFile( );
CFile(
   CAtlTransactionManager* pTM
);
CFile(
   HANDLE hFile 
);
CFile(
   LPCTSTR lpszFileName,
   UINT nOpenFlags 
);
CFile(
   LPCTSTR lpszFileName,
   UINT nOpenFlags,
   CAtlTransactionManager* pTM
);

第四个和第五个构造函数内部调用Open。所以他们确实打开了文件。

另一个问题是您应该使用operator |而不是||来组合打开的标志。

我建议使用默认的CFile构造函数,然后调用Open。请注意,如果出现错误,它不会抛出异常(相反,返回FALSE ),并且不需要将try/catch放在它周围。如果CFileException*失败,也可以将它传递给Open以获得更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29861940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档