如何使用c ++制作目录/文件夹。我试过使用mkdir()但没有成功。我想编写一个cin是变量的程序,然后使用这个变量来创建子目录和文件。 我目前的代码。它说mkdir()中的+运算符表示错误没有操作数
char newFolder[20];
cout << "Enter name of new project without spaces:\n";
cin >> newFolder;
string files[] = {"index.php"};
string dir[] = {"/images","/includes","/includes/js","/contact","about"};
for (int i = 0; i<=5; i++){
mkdir(newFolder + dir[i]);
ofstream write ("index/index.php");
write << "<?php \n \n \n ?>";
write.close();
}
答案 0 :(得分:13)
您需要#include <string>
,std::string
运算符在该标头中定义。
表达式newFolder + dir[i]
的结果是std::string
,而mkdir()
的结果是const char*
。改为:
mkdir((newFolder + dir[i]).c_str());
检查mkdir()
的返回值以确保成功,如果不使用strerror(errno)
来获取失败的原因。
这访问超出数组dir
的末尾:
for (int i = 0; i<=5; i++){
mkdir(newFolder + dir[i]);
5
中有dir
个元素,因此合法索引从0
到4
。改为:
for (int i = 0; i<5; i++){
mkdir(newFolder + dir[i]);
将std::string
用于newFolder
,而不是char[20]
:
std::string newFolder;
然后您不必担心输入超过19个字符(空终止符需要1个)的文件夹。