解决“_mkdir无法识别空格目录“问题

    在C++编程里,有时候需要创建一个文件夹,通常使用库函数_mkdir(const char* dirname)来新建一个文件夹,该库函数每次只能创建一个文件夹,不能级联创建。若要级联创建文件,则请用递归方式或者for循环方式调用_mkdir()。

#include   //头文件

//功能:目录创建函数
//备注:每次只能创建一个文件夹,对正斜杠/、反斜杠\都支持,反斜杠需要添加一个转义字符\,即反斜杠路径为\\,正斜杠的路径为/。
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。

解决“_mkdir无法识别空格目录“问题_第1张图片
图(1) 按Win+R快捷键,输入: calc,然后回车

解决“_mkdir无法识别空格目录“问题_第2张图片
图(2) 右击三横图标--》选中"程序员",再点击左侧的[DEC],表示10进制

解决“_mkdir无法识别空格目录“问题_第3张图片
图(3) 输入:32 得到空格的8进制(OCT码)为40

2、创建目录

    MFC使用_mkdri()创建一个新目录,其示例代码如下:

#include 

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)所示:

解决“_mkdir无法识别空格目录“问题_第4张图片
图(4) 要有写入权限,才能创建文件夹

你可能感兴趣的:(C++,MFC,创建目录,mkdir,空格)