как получить имена файлов из папки в C ++ - PullRequest
2 голосов
/ 01 июня 2009

предположим, я хочу написать ls или dir. как получить список файлов в данном каталоге? нечто эквивалентное .NET Directory.GetFiles и дополнительной информации.

не уверен насчет строкового синтаксиса, но:

string[] filePaths = Directory.GetFiles(@"c:\MyDir\");

Ответы [ 5 ]

23 голосов
/ 01 июня 2009

Проверьте boost :: filesystem , портативную и отличную библиотеку.

Редактировать : пример из библиотеки:

int main(int argc, char* argv[])
{
  std::string p(argc <= 1 ? "." : argv[1]);

  if (is_directory(p))
  {
     for (directory_iterator itr(p); itr!=directory_iterator(); ++itr)
     {
       cout << itr->path().filename() << ' '; // display filename only
       if (is_regular_file(itr->status())) cout << " [" << file_size(itr->path()) << ']';
       cout << '\n';
      }
  }
  else cout << (exists(p) : "Found: " : "Not found: ") << p << '\n';

  return 0;
}
4 голосов
/ 01 июня 2009

Посмотрите на API FindFirstFile и FindNextFile

http://msdn.microsoft.com/en-us/library/aa364418.aspx

1 голос
/ 01 июня 2009

в Windows: FindFirstFile , FindNextFile и FindClose могут использоваться для вывода списка файлов в указанном каталоге.

Псевдокод:

 Find the first file in the directory.
 do
   { 
   //

   }while(NextFile);

Close
0 голосов
/ 01 июня 2010

Poco :: DirectoryIterator является альтернативой

0 голосов
/ 01 июня 2009

Это полностью зависит от платформы.
Если на Windows вы должны использовать WINAPI, как предложено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...