2012-03-29 5 views
13

Как создать каталог/папку с 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

'mkdir()' это правильный способ сделать это, по крайней мере, в системе POSIX. Что случилось, когда вы попробовали? – Wyzard

ответ

12

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

+0

Благодарим за помощь. Я изменил условие, но все равно говорит то же самое, я не могу пройти мимо ошибки, чтобы увидеть какой-либо вывод. – Cjueden

+0

Снова спасибо, но + в mkdir по-прежнему ошибочно говорит, что оператор «+» не соответствует этим операндам – Cjueden

+1

@Cjueden, обновленный ответ: '#include ' – hmjd

Смежные вопросы