system()を使用せずにWindowsAPIでディレクトリを作成できる小さなコードを見つけました。唯一の問題は、サブディレクトリにディレクトリを作成できないことです。例えば
#include<windows.h>
int main(){
CreateDirectory ("C:\\random", NULL);
return 0;
}
Cでrandomという名前のフォルダーを作成します。
しかし、私がそうするなら
#include<windows.h>
int main(){
CreateDirectory ("C:\\Users\morons", NULL);
return 0;
}
これは、Usersの下のフォルダーmoronsではなく、Usersmoronsという名前のCcheフォルダーに作成されます。何か提案はありますか?
C:\ Usersでフォルダを作成または削除するには、管理者アクセスが必要です。これらの権限を持っていることを確認するために、管理者として.exeを実行していることを確認してください。そうしないと、CreateDirectoryは失敗します。
返されるエラーを取得するには、GetLastErrorを使用します。返される可能性のあるエラーのリファレンスについては、次の「戻り値」セクションを参照してください。
http://msdn.Microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx
また、あなたが探しているコードは
CreateDirectory ("C:\\Users\\morons", NULL);
「morons」の前に「\\」が必要なので
そこに別のバックスラッシュが必要です:
CreateDirectory ("C:\\Users\\morons", NULL);
Windowsアプリケーションをクロスプラットフォームにして、CreateDirectory()
c ++ 17標準を使用していましたが、現在は std :: filesystem :: create_directories
#include<iostream>
#include <filesystem>
int main()
{
std::filesystem::create_directories("C:\\newfolder\\morons");
}
Makefileを-std=c++17
に変更し、c ++ 17をサポートするGCCコンパイラに更新する必要があります。
Visual Studioで、次の手順に従います ここ c ++ 17を有効にします