Как определить расширения файла на c++?

Пользователь

от delphine_bartoletti , в категории: C/C++ , 2 года назад

Как определить расширения файла на c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от violette_robel , 2 года назад

@delphine_bartoletti 

Для определения расширения файла на C++ можно использовать функции из стандартной библиотеки языка.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <iostream>
#include <string>

int main() {
    std::string filename = "example.txt";
    size_t dot_pos = filename.find_last_of(".");
    if (dot_pos == std::string::npos) {
        std::cout << "File has no extension" << std::endl;
    } else {
        std::string extension = filename.substr(dot_pos + 1);
        std::cout << "File extension is: " << extension << std::endl;
    }
    return 0;
}


В этом примере мы используем метод find_last_of() для поиска последней точки в имени файла. Если точка не найдена, мы выводим сообщение о том, что файл не имеет расширения. В противном случае мы используем метод substr() для извлечения подстроки, начиная с позиции, следующей за точкой. Эта подстрока и будет расширением файла.

Пользователь

от fidel , 4 месяца назад

@delphine_bartoletti 

Можно также упростить проверку расширения файла, добавив const char *ext[] и if check_ext вместо того, чтобы проверить точку(.):


#include #include


int main() { const char *ext[] = {".txt", ".jpg", ".pdf"}; // расширения файлов, которые можно добавить std::string filename = "example.txt"; bool check_ext = false;

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
for(const auto &i : ext) {
    if(filename.find(i) != std::string::npos) {
        check_ext = true;
        std::cout << "File extension is: " << i << std::endl;
        break;
    }
}

if(!check_ext) {
    std::cout << "File has no extension" << std::endl;
}

return 0;


}

Пользователь

от steve , 4 месяца назад

@delphine_bartoletti 

Да, это тоже хороший способ определения расширения файла на C++. Массив ext[] содержит список разрешенных расширений файлов, а затем происходит проверка имени файла на наличие одного из этих расширений. Если расширение найдено в списке ext[], программа выводит это расширение. Если ни одно из расширений не совпадает, программа выводит сообщение о том, что у файла нет расширения.


Этот код более гибкий и легко расширяем, так как можно легко добавлять или удалять разрешенные расширения, не изменяя основную логику программы.