2017-09-14 74 views
0

嗨,大家好我是用C++編程的。我希望清除當前目錄中所有文件的所有數據。有人能告訴我獲得所有文件的命令嗎?在C++中清除所有文件中的數據

這就是我想,但它不工作:

ofs.open("*.*", ios::out | ios::trunc); 

的問題是:open("*.*",

回答

1

的fstream不能打開一個目錄下的所有文件,而不是,你可以每次迭代文件。
這個例子只能工作在C++ 17

#include <string> 
    #include <iostream> 
    #include <filesystem> 
    #include <fstream> 
    //namespace fs = std::experimental::filesystem; //for visual studio 
    namespace fs = std:::filesystem; 
    int main() 
    { 
     std::string path = "path_to_directory"; 
     for (auto & p : fs::directory_iterator(path)) { 
      if (fs::is_regular_file(p)){ 
       std::fstream fstr; 
       fstr.open(p.path().c_str(), std::ios::out | std::ios::trunc); 
       //do something 
       fstr.close() 
      } 
     } 
    } 

舊的編譯器(Windows)中:

#include <Windows.h> 
#include <string> 
#include <fstream> 


std::wstring path = L"path_to_directory"; 

path += L"\\*"; 
WIN32_FIND_DATA data; 
HANDLE hFind; 
if ((hFind = FindFirstFile(path.c_str(), &data)) != INVALID_HANDLE_VALUE) { 
    do { 
     if (data.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) { 
      std::fstream fstr; 
      fstr.open(data.cFileName, std::ios::out | std::ios::trunc); 
      //do something 
      fstr.close(); 
     } 
    } while (FindNextFile(hFind, &data) != 0); 
    FindClose(hFind); 
} 
+0

感謝隊友,但是這並不在所有的工作.. HTTPS://i.imgur。 com/li6azNC.png –

+0

Namespacename是不允許的。 –

+0

您需要一個C++ 17編譯器,而不是在dirent.h頭文件中需要opendir()/ readdir()函數for linux –

相關問題