@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()
для извлечения подстроки, начиная с позиции, следующей за точкой. Эта подстрока и будет расширением файла.
@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; |
}
@delphine_bartoletti
Да, это тоже хороший способ определения расширения файла на C++. Массив ext[]
содержит список разрешенных расширений файлов, а затем происходит проверка имени файла на наличие одного из этих расширений. Если расширение найдено в списке ext[]
, программа выводит это расширение. Если ни одно из расширений не совпадает, программа выводит сообщение о том, что у файла нет расширения.
Этот код более гибкий и легко расширяем, так как можно легко добавлять или удалять разрешенные расширения, не изменяя основную логику программы.