注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

C++小知识73——对文件夹的操作和数据转换  

2016-12-19 17:01:12|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
C++小知识73——对文件夹的操作和数据转换
在做一个新的小功能,需要不断的创建文件夹和文件,本来可以用这两个API搞定:
一、BOOL CreateDirectory(
  LPCTSTR lpPathName,                         // directory name
  LPSECURITY_ATTRIBUTES lpSecurityAttributes  
               // Pointer to a SECURITY_ATTRIBUTES structure
);
要判断文件夹是否存在,首先用CFindFile类得到文件(可以判断是否存在),存在的话用IsDirectory判断是否文件夹
二、BOOL PathIsDirectory(
    LPCTSTR pszPath
    );////判断一个目录是否存在!
或者说如果在多字符的环境下使用还是相对来说比较方便的,但随着UNICODE字符集下的参数的转变:
WINBASEAPI
BOOL
WINAPI
CreateDirectoryW(
    _In_ LPCWSTR lpPathName,
    _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
    );
LPCTSTR 和LPCWSTR 的不同,导致在使用std::string转换时非常不方便,找了半天还是决定不用它,回头又找发现了这个:
VC创建多级目录可采用MakeSureDirectoryPathExists函数

BOOL bRet=MakeSureDirectoryPathExists("c:\\tmp\\ff\\");


说明:

此函数在Dbghelp.h中定义.静态库为Dbghelp.lib. 需在项目中附加这个库。

函数功能描述:该函数创建一个从根目录开始的完整的指定路径.
.函数原型:
  BOOLMakeSureDirectoryPathExists(PCSTR DirPath);
.参数:
 DirPath [in] :指向一个以NULL结尾的包含正确的指定的路径名,如果路径名的结尾部分不是文件名而是文件夹,那么要以'/'为结束符.

.返回值:
函数成功返回TRUE;
函数失败返回FALSE;要获得具体错误信息用GetLastError();
这里需要说明的是:
1、不能使用类似于"C:/path/path/",而是类似于"C:\\path\\path\\"
2、不能在没有文件只有文件夹的情况下省略后面的//,即"C:\\path\\path"是不允许的。
3、要单独加载Dbghelp.lib这个库,在附加的库中增加。

另外在进行数字到字符串的转换中std::stringstream这个类挺好使使用如下:
std::string filePath = "";
std::stringstream sName;
std::string fileName = "";
sName << s_count0;//这是一个整数
sName >> fileName;
通过这两个小技巧进行配合,就可以自如的创建出任意花样的路径来保存。
  评论这张
 
阅读(23)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017