【问题标题】:How to make a folder/directory如何制作文件夹/目录
【发布时间】:2012-04-12 19:10:26
【问题描述】:

如何使用 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();
}

【问题讨论】:

  • mkdir() 是正确的方法,至少在 POSIX 系统上是这样。当你尝试它时发生了什么?

标签: c++ directory


【解决方案1】:

您需要#include &lt;string&gt;std::string 运算符在该标头中定义。

表达式newFolder + dir[i] 的结果是std::stringmkdir() 采用const char*。改为:

mkdir((newFolder + dir[i]).c_str());

检查mkdir()的返回值确保成功,如果不使用strerror(errno)获取失败原因。

这将访问数组末尾之外的dir

for (int i = 0; i<=5; i++){
    mkdir(newFolder + dir[i]);

dir 中有5 元素,因此合法索引从04。改为:

for (int i = 0; i<5; i++){
    mkdir(newFolder + dir[i]);

std::string 用于newFolder,而不是char[20]

std::string newFolder;

那么您无需担心输入的文件夹超过 19 个字符(空终止符需要 1 个字符)。

【讨论】:

  • 感谢您的帮助我更改了 for 条件,但它仍然表示相同的内容,我无法通过错误查看任何输出。
  • 再次感谢您,但是 mkdir 中的 + 仍然出错它说没有运算符“+”与这些操作数匹配
猜你喜欢
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 2012-02-28
  • 1970-01-01
相关资源
最近更新 更多