2012-03-29 91 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 2012-03-29 06:43:57

回答

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]); 

有在dir5元素,所以法律索引從04。更改爲:

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

使用std::stringnewFolder,而不是char[20]

std::string newFolder; 

然後你有超過19個字符(1個用於空終止必需)文件夾上不關心被輸入。

+0

感謝您的幫助我改變了條件,但它仍然說同樣的事情,我無法越過錯誤看到任何輸出。 – Cjueden 2012-03-29 06:56:54

+0

再次感謝你,但在mkdir +仍然錯誤它說沒有運算符「+」匹配這些操作數 – Cjueden 2012-03-29 07:00:28

+1

@Cjueden,更新的答案:'#include ' – hmjd 2012-03-29 07:04:51

相關問題