在C++编程里,有时候需要创建一个文件夹,通常使用库函数_mkdir(const char* dirname)来新建一个文件夹,该库函数每次只能创建一个文件夹,不能级联创建。若要级联创建文件,则请用递归方式或者for循环方式调用_mkdir()。
#include <direct.h> //头文件
//功能:目录创建函数
//备注:每次只能创建一个文件夹,对正斜杠/、反斜杠\都支持,反斜杠需要添加一个转义字符\,即反斜杠路径为\\,正斜杠的路径为/。
int _mkdir(
const char *dirname
);
1、_mkdir()里的空格等效替换
在_mkdir(const char* dirname)函数里,如果目录dirname包含空格,则直接调用_mkdir()函数会失败。这时候,就需要对空格进行转义,比如进行8进制转义,’ ’ 空格的ASCII是32,转换为8进制为40,然后再添加一个转义字符\,流程如下:
' ' == 32 (ASCII) == \40 (八进制)
按Win+R快捷键 --》输入: calc --》切换到"程序员"模式,如图(1)、图(2)所示,点击[DEC]按钮,然后输入: 32, 可以看到32对应的OCT(即8进制)为40。
2、创建目录
MFC使用_mkdri()创建一个新目录,其示例代码如下:
#include <direct.h>
void CreateFolder(CString & strDir)
{
strDir.Trim(); //去掉首尾制表符(\r\n\t等)
strDir.Replace(_T(" "),_T("\40")); //替换目录里的空格
CStringA strPathA;
strPathA = strDir;
int ret = _mkdir(strPathA.GetString());
if (ret == 0)
AfxMessageBox(_T("创建成功!"));
else
AfxMessageBox(_T("创建失败!"));
}
注意,如果要在系统盘C盘里,创建目录,则需要给当前用户添加读写权限,否则没有读写权限,则无法创建文件夹,如图(4)所示: