更改文件/路径扩展名
Change file/path extension
使用VC++,我如何从以下文件路径中删除扩展名并将其更改为新的扩展名(使用字符串):
CString path(_T(m_DirTree.GetCurrentDir())); // copy file path to variable 'path' of type CString
//Add code here....
有问题的文件的路径是L:\PowerStar 5 Demo II\Programs\Demo\Programs \33100.PRG,我想将文件扩展名更改为33100.CRC。有没有办法使用_splitpath将文件扩展名将更改为。CRC?这个路径是可以通过传递给可变路径的目录树选择的众多路径之一,我只是以这个特定路径为例。所以我不能更改如下:
CString path(_T("L:PowerStar 5 Demo IIProgramsDemoPrograms33100.CRC"));
有没有可能将字符串连接起来,这样我就可以打开而不会出现异常?
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
// Split path to isolate file extension(.prg) for if statement
_splitpath(m_DirTree.GetCurrentDir(), drive, dir, fname, ext);
CString crcFile;
crcFile = strcat(fname,".CRC"); // concatenate chars to point to .CRC file of same name
FILE *cr = fopen(fname, "r"); // Handle to the file in question
上面的代码引发了一个未处理的异常。
尝试使用Shell API函数PathRenameExtension。或者,如果您希望为您处理缓冲区管理CPathT::RenameExtension,例如:
CPath path(_T("L:\PowerStar 5 Demo II\Programs\Demo\Programs\33100.PRG"));
path.RenameExtension(_T(".CRC"));
CString modifiedPath = path;
CString有两个方法,它们可能会对您有所帮助。ReverseFind()和Left()
CString filenameWithoutExtension = path.Left(path.ReverseFind(_T('.')));
然后,您可以在新字符串的末尾添加新的文件扩展名(例如".exe")。
path = filenameWithoutExtension + _T(".exe");
相关文章:
- C++中的VLA,扩展名为std=C++11
- 如何按文件扩展名引用文件夹中的文件
- VSCode 中带有 C/C++ 扩展名的多行注释缩进错误
- 为什么我无法打开/读取从 Python 调用的 C 扩展名中的 txt 文件?
- 使用Boost文件系统C++将具有特定扩展名的文件的名称保存在特定文件夹中
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- Visual Studio Code "variable " u8 的 C/C++ 扩展名 " " 不是类型名称"
- Makefile by ocaml 和 cpp 扩展名
- CMake 不编译具有非标准扩展名的文件
- Visual Studio 2019 - 设置文件类型的默认扩展名
- 如何在 Windows 上获取带有 c++ 且没有 <dirent.h> 的特定扩展名的所有文件的列表
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 如何在 vscode 扩展名中检索 C/C++ 文件的编译命令
- 通过cMake使用具有自定义文件扩展名的共享库
- 如何在 CMake 中"override"文件的按扩展名类型
- 在另一个字符串中插入文件扩展名之前的字符串
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 运行正则表达式时未选中的异常 - 从文件路径获取不带扩展名的文件名
- 更改文件/路径扩展名
- POSIX 或 Linux API 函数,用于从路径获取文件扩展名