寫c++,路徑的問題一直都讓人很頭疼,抽空整理一些方法;可以對比著python中os.path相關去看效果會更好。
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
判斷路徑中是否有空格,有的話,就是用
「」引號把整個路徑包含起來
將乙個路徑追加到另乙個路徑後面
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
驗證路徑是否乙個檔名(有可能是乙個路徑)
pathi***e
驗證路徑是否是可執行檔案。注意:不僅僅是
.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
路徑是否是
格式。
pathyetanothermakeuniquename
基於已存在的檔案,自動建立乙個唯一的檔名。比較有用,比如存在
「新建檔案
」,此函式會建立檔名
「新建檔案(2)
」。
C C 路徑相關的API
1.加不加都一樣,就是指當前目錄 2.表示當前目錄的上級目錄,即當前的父目錄。這裡的當前目錄就是指.vcxproj和當前執行的.cpp檔案所在目錄,而不是.sln檔案所在目錄 注意 前面兩種在工程資料夾裡面執行時沒有問題的,但是打包成dll,被呼叫就行不通了 3.獲取當前執行檔案的路徑 不包括檔名 ...
路徑相關API
需要標頭檔案 shlwapi.h 其中有一些函式功能存在重複,我在認為比較常用的的函式上加紅。bool pathfileexists lpctstr lpszpath 功能 檢查檔案 路徑是否存在 lptstr pathfindfilename lpctstr ppath 功能 獲得路徑中的檔名 例...
和路徑相關的API
需要標頭檔案 shlwapi.h bool pathfileexists lpctstr lpszpath 功能 檢查檔案 路徑是否存在 lptstr pathfindfilename lpctstr ppath 功能 獲得路徑中的檔名 例如 pathfilefilename c program f...