Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Узнать тип файла по его расширению - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как создать указатель на функцию-член класса и вызвать его? http://www.cyberforum.ru/cpp-beginners/thread1244931.html
Подскажите как правильно сделать, а в дальнейшем вызвать указатель на функцию член класса: #include "stdafx.h" #include <iostream> using namespace std; class Base { public: int foo(){cout...
C++ Анимировать Notepad++ Сложно ли будет новичку превратить унылый Notepad++ в brackets? http://4.firepic.org/4/images/2014-08/20/3gjw432khrsa.gif http://4.firepic.org/4/images/2014-08/20/oxey23ve79er.gif http://www.cyberforum.ru/cpp-beginners/thread1244902.html
Выводятся две строки подряд при выводе лишь одной C++
Баловался со строками. Возник вопрос. Есть код: ... char str1 = "", str2 = ""; cin >> str1; cout << str1 << endl; cin >> str2; cout << str2 << endl;
Двумерный вектор: можно ли как-то перегрузить [] чтобы доступ был [0, 0] C++
У меня есть двумерный вектор, можно как-то перегрузить чтобы доступ был ? А то сейчас сделал через прокси-класс , но все-таки хотелось бы вариант с одинарными.
C++ Возвращаемый тип конструктора копирования в абстрактном классе http://www.cyberforum.ru/cpp-beginners/thread1244724.html
Здравствуйте! Есть абстрактный класс (с "чистыми" виртуальными функциями), и в нем необходимо явно определить конструктор копирования. Но если написать, что возвращаемый тип - сам класс, то...
C++ Найти ошибку в программе #include<iostream> #include<stdio.h> #include<vector> using namespace std; int main(){ int n; cin>>n; vector<int> g; подробнее

Показать сообщение отдельно
iPet3o
1 / 1 / 0
Регистрация: 17.04.2013
Сообщений: 32

Узнать тип файла по его расширению - C++

20.08.2014, 14:36. Просмотров 435. Ответов 8
Метки (Все метки)

Здравствуйте, собственно вот что требуется: имея полный путь к файлу и его расширение узнать тип файла, например для .mp3/.flac/.m4a и подобных нужно чтобы мы получали в ответ что это аудио файл, а для .txt/.doc - текстовый, ну и все в том же духе. Пробовал использовать вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
string DBAdapter::GetMimeType(const string &szExtension)
{
    // return mime type for extension
    HKEY hKey = NULL;
    string szResult = "application/unknown";
 
    // open registry key
    if (RegOpenKeyEx(HKEY_CLASSES_ROOT, szExtension.c_str(),
        0, KEY_READ, &hKey) == ERROR_SUCCESS)
    {
        // define buffer
        char szBuffer[256] = { 0 };
        DWORD dwBuffSize = sizeof(szBuffer);
 
        // get content type
        if (RegQueryValueEx(hKey, "Content Type", NULL, NULL,
            (LPBYTE)szBuffer, &dwBuffSize) == ERROR_SUCCESS)
        {
            // success
            szResult = szBuffer;
        }
 
        // close key
        RegCloseKey(hKey);
    }
 
    // return result
    return szResult;
}
Но он вполне закономерно работает только для типов зарегистрированных в системе т.к смотрит на ключ "Content Type" в регистре, и если для, например, .mp3 он выводит что это "audio/mpeg", то для .avi я получаю "application/unknown", т.к. в реестре для этого расширения не прописан тип контента. Как можно обойти этот недостаток? Может какая-то библиотека для этого есть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru