2012-03-29 21 views
13

मैं C++ के साथ निर्देशिका/फ़ोल्डर कैसे बना सकता हूं। मैंने सफलता के बिना 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(); 
} 
+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]); 

वहाँ dir में 5 तत्व हैं, तो कानूनी अनुक्रमित 0 से 4 कर रहे हैं। char[20] से

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

उपयोग std::stringnewFolder के लिए, बल्कि: बदलें:

std::string newFolder; 

तो फिर तुम से अधिक 19 वर्ण (1 अशक्त टर्मिनेटर के लिए आवश्यक) के एक फ़ोल्डर पर कोई चिंता दर्ज किया जा रहा है।

+0

आपकी मदद के लिए धन्यवाद मैंने शर्त के लिए बदल दिया लेकिन यह अभी भी वही बात कहता है, मैं किसी भी आउटपुट को देखने के लिए त्रुटि से पहले नहीं जा सकता। – Cjueden

+0

फिर से धन्यवाद, लेकिन mkdir में + अभी भी यह त्रुटि दे रहा है कि कोई ऑपरेटर "+" इन ऑपरेटरों से मेल नहीं खाता – Cjueden

+1

@Cjueden, अद्यतन उत्तर: '# शामिल ' – hmjd

संबंधित मुद्दे