2012-03-29 15 views
13

C++でディレクトリ/フォルダを作成するにはどうすればいいですか?私は成功せずにmkdir()を使用しようとしました。私はcinが変数であるプログラムを書いて、この変数を使ってサブディレクトリとファイルを作成します。現在のコードは です。これは、MKDIRで+演算子は()エラーあなたが#include <string>にノーオペランドフォルダ/ディレクトリの作成方法

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

は、std::string事業者がそのヘッダで定義されていると言うと言います。

newFolder + dir[i]の結果は、std::stringであり、mkdir()は、const char*である。失敗の理由を取得するためにstrerror(errno)を使用しない場合は、成功を確実にするために

mkdir((newFolder + dir[i]).c_str()); 

チェックmkdir()の戻り値:に変更します。

これはアレイdirの端部を越えてアクセス:

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

dir5要素があるので、法的インデックスが0から4にあります。 char[20]ではなく、

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

使用std::stringnewFolderのために:に変更し

std::string newFolder; 

は、その後、あなたは(ヌルターミネータに必要な1)を超える19文字のフォルダに対して何ら心配入力されているがありません。

+0

あなたの助けていただきありがとうございます。条件を変更しましたが、それでも同じことが言われていますが、出力を見るためにエラーを過ぎることはできません。 – Cjueden

+0

もう一度ありがとうが、mkdirの+はオペレータ "+"がこれらのオペランドに一致しないとエラーが表示されます – Cjueden

+1

@Cjueden、更新された回答:#include hmjd

関連する問題