Подтвердить что ты не робот

Как создать папку/каталог

Как создать каталог/папку с С++. Я попытался использовать mkdir() без успеха. Я хочу написать программу, которая содержит переменную, а затем использует эту переменную для создания в ней подкаталога и файлов. мой текущий код. Он говорит, что оператор + в 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();
}
4b9b3361

Ответ 1

Вам нужно #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 требуется для нулевого терминатора).