2015-02-28 3 views
0

Я работаю над программой, которая требует от меня в нескольких точках импортировать содержимое подкаталога моего проекта C++ в vector<string>. Предполагая, что каталог проекта называется root\, и каталог, который я хочу проверить, - root\userFiles. Эта папка содержит только дополнительные файлы и дополнительные подпапки.Импорт списка файлов в подкаталог в массив

Однако трюк в том, что я ограничен, я не могу использовать ни один из файлов заголовков boost, dirent.h. Просто основные.

Одним из решений, которое я смог придумать, было использование команды system("dir /b * > userFiles/fileList.txt");, а затем фильтрация результатов путем чтения этого файла и импорта его в вектор.

Моя проблема заключается в том, как я «CD» в эту папку, запустите эту команду в то же время в этой папке, а затем выйдите обратно в корневую папку ..

Я попытался с помощью команды system("chdir userFiles/") но я все еще получая все файлы в корневой папке.

Любая помощь будет оценена по достоинству.

+0

Если вы используете 'chdir' (или' _chdir', это может быть под Windows), чтобы перейти в другой каталог FIRST, а затем запустить 'system', он будет работать так, как вы ожидаете. В противном случае есть много вопросов с хорошими ответами, описывающих, как вы на самом деле получаете имена файлов каталога здесь. –

+0

Как я указал в вопросе. 'chdir', похоже, не работает. Я получаю список всех файлов во всей корневой папке. Что касается ответов, большинство из них требуют, чтобы я использовал какой-то файл заголовка третьей стороны, который я не могу использовать. – shadoweye14

+0

Я предполагаю, что вы используете «окна», и в этом случае вы должны иметь возможность использовать '' правильно? Если вы не можете использовать 'windows.h', я бы использовал fstream для создания пакетного файла, который содержит каталог' 'cd-you-want \ ndir/b''. –

ответ

0

Итак, я разработал более простой способ сделать это.

int main() 
{ 
system("chdir userFiles && dir /b * > fileList.txt"); 
} 

Я использую оператор && объединиться несколько строк команд. Поскольку я использую только функцию system(), как только все эти команды будут частью одного и того же процесса.

+0

Нет смысла делать 'chdir ...' - «новый» каталог активен, пока процесс оболочки все еще активен, поэтому когда вы завершаете команду, родительский процесс все равно будет иметь свой текущий рабочий каталог, где он был раньше. –

Смежные вопросы