C++路径的整理

写C++,路径的问题一直都让人很头疼,抽空整理一些方法;也许以后会用到:

1."./" 加不加都一样,就是指当前目录

2."../" 表示当前目录的上级目录,即当前的父目录。

(这里的当前目录就是指.vcxproj和当前运行的.cpp文件所在目录,而不是.sln文件所在目录)

注意:前面两种在工程文件夹里面执行时没有问题的,但是打包成DLL,被调用就行不通了;

3.获取当前执行文件的路径(不包括文件名)——(dll获取自身路径)

char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH, path);

4.GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径,也就是当前运行程序的全路径

GetModuleFileName函数原型
DWORD GetModuleFileName(
HMODULE hModule, //将要得到的模块的句柄;如果是当前模块,NULL
LPTSTR lpFilename, //保存路径缓存区的名字
DWORD nSize //缓存区的大小

windows路径操作API函数

路径截断与合并函数
PathRemoveArgs 去除路径的参数
PathRemoveBackslash 去除路径最后的反斜杠“\”
PathAddBackslash 在路径最后加上反斜杠“\”
PathRemoveBlanks 去除路径前后的空格
PathAddExtension 在文件路径后面加上扩展名
PathRemoveExtension 去除文件路径扩展名
PathRenameExtension 更改文件路径扩展名
PathRemoveFileSpec 去除文件名,得到目录
PathUnquoteSpaces 去除路径中的首尾空格
PathQuoteSpaces 判断路径中是否有空格,有的话,就是用“”引号把整个路径包含起来
PathAppend 将一个路径追加到另一个路径后面
PathCombine 合并两个路径
PathSkipRoot 去掉路径中的磁盘符或UNC部分。
PathStripPath 去掉路径中的目录部分,得到文件名。
PathStripToRoot 去掉路径的文件部分,得到根目录。
PathCompactPath 根据像素值生成符合长度的路径。

如原始路径: C:\path1\path2\sample.txt

根据120像素截断后为: C:\pat...\sample.txt

根据25像素截断后为: ...\sample.txt

PathCompactPathEx根据字符个数来生成符合长度的路径。
PathSetDlgItemPath将路径数据设置到对话框的子控件上。
PathUndecorate去除路径中的修饰——具体还没看明白,MSDN的例子只是去掉了括号。
PathUnExpandEnvStrings将路径中部分数据替换为系统环境变量格式
路径查找比较函数
PathFindOnPath从路径中查找路径
PathFindExtension查找路径的扩展名
PathFindFileName获取路径的文件名
PathFindNextComponent查找匹配路径(不太熟悉)
PathFindSuffixArray查找给定的文件名是否有给定的后缀。
PathGetArgs获取路径参数
PathGetCharType获取路径字符类型
PathGetDriveNumber根据逻辑盘符返回驱动器序号
路径转换函数
PathRelativePathTo创建一个路径到另一个路径的相对路径。
PathResolve将一个相对路径或绝对路径转换为一个合格的路径,这个理解起来比较拗口。
PathCanonicalize规范化路径。将格式比较乱的路径整理成规范的路径格式。
PathBuildRoot根据给定的磁盘序号创建根目录路径
CreateDirectory创建目录
GetShortPathName将长路径转为8.3格式的短路径格式
GetLongPathName将短路径格式转为长路径。
PathGetShortPath将长路径转为短路径格式(8.3格式)
PathCreateFromUrl将URL路径转为MS-DOS格式
PathMakePretty把路径全部转为小写,增加可读性。
PathMakeSystemFolder给路径增加系统属性
PathUnmakeSystemFolder去除路径中的系统属性。
PathMakeUniqueName从模板创建统一的路径格式——没用过,不熟悉
PathProcessCommand生成一个可执行的路径,比如有参数的,会自动将路径用“”包含。

这在ShellExecute中比较有用。

路径验证函数
PathCleanupSpec去除路径中不合法的字符
PathCommonPrefix比较并提取两个路径相同的前缀
PathFileExists验证路径是否存在
PathMatchSpec判断路径是否匹配制定的扩展名。
PathIsDirectory判断路径是否是一个有效的目录
PathIsFileSpec验证路径是否一个文件名(有可能是一个路径)
PathIsExe验证路径是否是可执行文件。注意:不仅仅是.exe,还有.bat,.com,.src等
PathIsRoot路径是否为根路径
PathIsRelative判断路径是否是相对路径
PathIsContentType检测文件是否为制定类型。

例如:PathIsContentType( “hello.txt” , “text/plain” ) 返回TRUE

PathIsContentType( “hello.txt” , “image/gif” ) 返回FALSE

PathIsHTMLFile判断路径是否是html文件类型——根据系统注册类型判断。
PathIsLFNFileSpec判断路径是否是长路径格式
PathIsNetworkPath判断路径是否是一个网络路径。
PathIsPrefix判断路径是否含有指定前缀
PathIsSameRoot判断路径是否有相同根目录
PathIsSlow判断路径是否是一个高度延迟的网络连接——我也不太明白是啥意思。
PathIsSystemFolder判断路径是否有系统属性(属性可以自己设定)
PathIsUNC路径是否是UNC格式(网络路径)
PathIsUNCServer路径是否是UNC服务器
PathIsUNCServerShare路径是否仅仅是UNC的共享路径格式
PathIsURL路径是否是http格式。
PathYetAnotherMakeUniqueName基于已存在的文件,自动创建一个唯一的文件名。比较有用,比如存在“新建文件”,此函数会创建文件名“新建文件(2)”。

原文链接: https://www.cnblogs.com/Sketch-liu/p/7276952.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/257743

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午11:12
下一篇 2023年2月14日 上午11:12

相关推荐