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

来源:互联网 发布:手机淘宝店招在线制作 编辑:程序博客网 时间:2024/05/21 11:15

程序中经常用到获取路径。

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

获取系统特殊目录
比如使用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;}
2 0