2016-12-28 63 views
0

大家晚上好,我正在用C++編寫一個庫管理應用程序,使用虛擬工作室2012.我已經用Dev C++編寫了一些代碼,但是當我切換到visual studio它會給出錯誤。它涉及創建文件夾並檢查文件夾是否實際創建。這是使用dir和mkdir。用cual製作windows目錄2012編碼

+0

好的。謝謝你們,我會嘗試使用這兩種方法,看看哪種方法最適合我,我會讓你們知道它是怎麼回事。再次感謝。 – Maxfurry

+0

請在郵件旁邊減號是什麼 – Maxfurry

+0

這意味着有人沒有想到這是一個很好的問題,因爲某些原因,我們習慣在評論中說明原因,但並不是必需的, – metal

回答

0

非常感謝球員,但我發現這是解決我的問題

#include <iostream> 
#include <direct.h> 
#include <stdlib.h> 
#include <stdio.h> 
using namespace std; 

void main(void) 
{ 
    if(_mkdir("\\testtmp") == 0) 
    { 
     printf("Directory '\\testtmp' was successfully created\n"); 
     system("dir \\testtmp"); 
     if(_rmdir("\\testtmp") == 0) 
     printf("Directory '\\testtmp' was successfully removed\n" ); 
     else 
     printf("Problem removing directory '\\testtmp'\n"); 
    } 
    else 
     printf("Problem creating directory '\\testtmp'\n"); 
    int a; 
    cin >> a; 
} 

的CIN >>一個;只是保持輸出屏幕,所以我可以看到結果

2

對於大多數文件系統功能,Windows和Linux(POSIX)不支持相同的API。您可以使用微軟特定於平臺的API,如CreateDirectory()或使用類似POSIX的版本,如_mkdir()

如果你有一個更新的C++編譯器/標準庫,你可以使用定製成爲標準C++的一部分的experimental filesystem library,或許早於C++ 17。如果沒有,您可以使用Boost.Filesystem從中繪製預標準實驗庫。

下面是使用Boost.Filesystem的,這將在Windows和Linux的工作,而無需修改一個完整的,最小的例子:

#include <iostream> 
#include <boost/filesystem.hpp> 

namespace fs = boost::filesystem; 

int main() 
{ 
    if(!fs::exists("my_dir")) 
    { 
     if(fs::create_directory("my_dir")) 
     { 
      std::cout << "Directory created!\n"; 
     } 
    } 
} 

看到它運行:Coliru

這裏是相同的代碼,但是與std::experimental::filesystemColiru

您需要在構建系統中設置相應的包含和鏈接器路徑,以使其中的任何一個在本地工作。使用文件系統的最大「陷阱」是默認情況下會拋出大量錯誤的異常。您可以在適當的位置設置try/catch塊,或者傳入錯誤代碼參數以使其返回狀態。

+0

感謝您的快速回復,但我的問題在於它的工作原理Dev C++,但爲什麼不在Visual Studio上我會嘗試發佈代碼 – Maxfurry

+0

這是 – Maxfurry

+0

以下的代碼@Maxfurry:我沒有看到代碼。但我已經給我的答案增加了一個例子。 – metal

0
#include <stdio.h> 
#include <windows.h> 

int main() { 
    if (!CreateDirectoryA("C:\\ABC123", NULL)) 
    { 
     if (GetLastError() == ERROR_ALREADY_EXISTS) 
     { 
      printf("Already Exists"); 
     }else if (GetLastError()== ERROR_PATH_NOT_FOUND) 
     { 
      printf("Path not found"); 
     } 
    }else{ 
     printf("Created.."); 
    } 
} 

簡單的功能會做。