介紹幾個程式中關於"路徑字串"的函式
阿新 • • 發佈:2019-02-10
程式中經常用到獲取路徑。
之前的部落格也講到過關於獲取路徑的一些操作。
獲取系統特殊目錄
比如使用SHGetFolderPath函式獲取windows系統的一些目錄:
HRESULT SHGetFolderPath(
HWND hwndOwner,
int nFolder,
HANDLE hToken,
DWORD dwFlags,
LPTSTR pszPath
);
以上為函式原型,其中nFolder指定要獲取的目錄(具體參考MSDN說明)
CSIDL_BITBUCKET 回收站
CSIDL_CONTROLS 控制面板
CSIDL_DESKTOP Windows 桌面Desktop
CSIDL_DESKTOPDIRECTORY Desktop的目錄
CSIDL_DRIVES 我的電腦
CSIDL_FONTS 字型目錄
CSIDL_NETHOOD 網路上的芳鄰
CSIDL_NETWORK 網路上的芳鄰虛擬目錄
CSIDL_PERSONAL 我的文件
CSIDL_PRINTERS 印表機
CSIDL_PROGRAMS 程式組
CSIDL_RECENT 最近開啟的文件
CSIDL_SENDTO “傳送到”選單項
CSIDL_STARTMENU 任務條啟動選單項
CSIDL_STARTUP 啟動目錄
CSIDL_TEMPLATES 文件模板
判斷一個目錄是否存在
直接上程式碼了:
#include<iostream>
#include<Windows.h>
bool FolderExists(std::wstring s);
int main()
{
std::cout << FolderExists(L"D:/lcwin") << std::endl;
}
bool FolderExists(std::wstring s)
{
DWORD attr;
attr = GetFileAttributes(s.data());
return (attr != (DWORD)(-1 )) && (attr & FILE_ATTRIBUTE_DIRECTORY);
}
判斷一個路徑是否存在中文
bool HaveChineseChar(std::wstring path)
{
bool bHaveChineseChar = FALSE;
for (size_t i = 0; i < path.length(); i++)
{
if (path.at(i) > 255)
{
bHaveChineseChar = TRUE;
break;
}
}
return bHaveChineseChar;
}
中文路徑總是困擾著我們,尤其是使用sqlite資料庫的時候。所以,有時候你希望寫一個函式來判斷一個路徑中是否含有中文。
判斷檔案是否存在
bool isFileExist(const char * strFileName)
{
if (_access(strFileName, 0) == 0)
{
return true;
}
return false;
}