今天我在网上做了很多关于如何在C++中创建目录的研究,找到了许多方法,有些比其他方法更容易。
我尝试使用
到目前为止,一切都好,但是当我想要更改路径时,它不起作用(请参见下面的代码)。我有一个默认字符串路径
为此,我使用
编译器没有问题,但是它不起作用。它打印10次"Impossible create folder n"。错在哪里?
我可能在使用
另外,是否有其他方法可以创建文件夹?我查看了
我尝试使用
_mkdir
函数来创建一个文件夹,例如_mkdir("C:/Users/...");
。请注意,函数参数将被转换为const char*
。到目前为止,一切都好,但是当我想要更改路径时,它不起作用(请参见下面的代码)。我有一个默认字符串路径
"E:/test/new"
,我想创建10个子文件夹:new1
,new2
,newN
,...,new10
。为此,我使用
static_cast
将字符串与数字(for
循环计数器)连接起来,然后使用c_str()
转换字符串,将其分配给一个const char*
变量。编译器没有问题,但是它不起作用。它打印10次"Impossible create folder n"。错在哪里?
我可能在使用
c_str()
将字符串转换为const char*
时犯了一个错误。另外,是否有其他方法可以创建文件夹?我查看了
CreateDirectory();
(API),但它使用像DWORD HANDLE
这样的关键字,这对于初学者来说有点难以理解(我不知道这些是什么意思)。#include <iostream>
#include <Windows.h>
#include<direct.h>
using namespace std;
int main()
{
int stat;
string path_s = "E:/test/new";
for (int i = 1; i <= 10; i++)
{
const char* path_c = (path_s + static_cast<char>(i + '0')).c_str();
stat = _mkdir(path_c);
if (!stat)
cout << "Folder created " << i << endl;
else
cout << "Impossible create folder " << i << endl;
Sleep(10);
}
return 0;
}
i == 10
时,i + '0'
的效果不是很好。也许你应该使用std::to_string
代替? - Some programmer dudeCreateDirectoryA
函数非常易于使用:将路径作为第一个参数传递,将空指针作为第二个参数传递。 - Some programmer dudemkdir
... - Aconcagua_mkdir
只会创建一个目录层级。 - Martin Bonner supports Monica