Как сделать папку / каталог - PullRequest
14 голосов
/ 29 марта 2012

Как мне сделать каталог / папку с 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();
}

1 Ответ

13 голосов
/ 29 марта 2012

Вам нужно #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]);

В dir есть 5 элементов, поэтому допустимые индексы могут быть от 0 до 4.Измените на:

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

Используйте std::string для newFolder вместо char[20]:

std::string newFolder;

Тогда вам не нужно беспокоиться о папке длиной более 19 символов (1 требуется для нулевого терминатора) вводится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...