Я хочу получить имя файла в строке из Directoy, используя C ++

0

У меня есть каталог под названием test. Этот каталог создается динамически при запуске другой части кода. И тест содержит разные файлы. Эти файлы также генерируются автоматически. Предположим, что я создал a1.txt, a2.txt, ac, a3.txt, bc в тесте каталога. Я хочу получить имя файла a3.txt в переменной. Это означает, что я хочу перебирать содержимое каталога и получать имя файла ".txt", связанного с наибольшим числом. Пожалуйста, помогите мне в решении этой проблемы.

  • 1
    Windows / Linux?
  • 0
    Linux. Ubuntu 12.04.
Теги:
file

2 ответа

0

Ниже приводятся как каталоги, так и файлы в данном каталоге.

using namespace std;

int getDirContent (string dir, vector<string> &files) {
    DIR *dp;
    struct dirent *dirp;

    if ((dp  = opendir(dir.c_str())) == NULL) {
        cout << "Error(" << errno << ") opening " << dir << endl;
        return errno;
    }

    while ((dirp = readdir(dp)) != NULL) {
        files.push_back(string(dirp->d_name));
    }

    closedir(dp);
    return 0;
}

string dir = string(".");
vector<string> files = vector<string>();
getDirContent(dir,files);
  • 0
    При выполнении этого я получаю "*** Ошибка в` ./a.out ': двойное освобождение или повреждение (out): 0x00007ffff869f680 *** Aborted (core dumped) "error! Компиляция прошла успешно.
0

Используя функцию opendir,

DIR *opendir(const char *name);

После открытия этого каталога, используя readdir получите файлы в этом каталоге.

struct dirent *readdir(DIR *dirp);

Используя структуру, вы можете получить имя файла, и вы можете использовать этот файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню