您的位置:首页 > 其它

介绍几个程序中关于"路径字符串"的函数

2016-01-12 20:27 513 查看
程序中经常用到获取路径。

之前的博客也讲到过关于获取路径的一些操作。

获取系统特殊目录

比如使用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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: