С.И.Хашин
В этом модуле реализуется одна-единственная фунция:
void GetFileNames(const std::string& path, const std::string& mask, std::vector<std::string>& file_names);
Она записывает в file_names все имена файлов в каталоге path удовлетворяющие маске.
Внимание! Не забудьте подключить строки и вектора:
#include <string> #include <vector>
Например, пусть каталог C:\t\170606\ содержит файлы:
1.txt russian буквы.txt two words.txt русские буквы.txt русский.txt
Рассмотрим следующий код:
vector<string>&fnames; string fname; char *path = "C:\\t\\170606\\"; GetFileNames(path, "*.txt", fnames); FILE *f = fopen("dir.txt", "w"); for (unsigned i = 0; i < fnames.size(); i++) { fname = path; fname += fnames[i]; fprintf(f, " %s, \n", fname.c_str()); } fclose(f);
Если в настройке проекта
Project->Properties->Configuration Properties ->General -> Character setвыбрано "Use Multi-Byte Character Set", то в файле dir.txt окажется текст (в кодировке cp-1251):
C:\t\170606\1.txt, C:\t\170606\russian буквы.txt, C:\t\170606\two words.txt, C:\t\170606\русские буквы.txt, C:\t\170606\русский.txt,
Если же в настройка проекта выбрано "Use Unicode Character Set", то в файле dir.txt окажется текст:
C:\t\170606\1.txt, C:\t\170606\russian 1C:2K.txt, C:\t\170606\two words.txt, C:\t\170606\@CAA:85 1C:2K.txt, C:\t\170606\@CAA:89.txt,
Конечно, с этим можно бороться и победить, но мне (пока) не требуется.
В общем, будьте осторожны с русскими буквами в именах файлов!