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

Сгруппировать песни MP3 с одинаковым исполнителем - C++

Восстановить пароль Регистрация
 
Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
08.08.2013, 18:47     Сгруппировать песни MP3 с одинаковым исполнителем #1
Когда-то писал это и уже почти сделал, но остановился на самом последнем моменте, вообще на последнем, так жаль, поетому очень сильно прошу о помощи.

Она должна определять в одной папке(пока это папка,где находиться сама прога) песни формата мп3 с ОДИНАКОВЫМИ исполнителями(тоесть с ID3 тэгов)и перемещать все эти песни в папку название которой будет таким же как и Исполнитель.
Смотрите,всё готово и только последние действие,а именно,как переслать файл оттуда туда,не имею понятия как сделать
Прошу помочь.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# include <iostream>
# include <string>
# include <vector>
# include <algorithm>
# include <cmath>
# include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <fstream>
#include <winbase.h>
using namespace std;
 
void showFiles( WCHAR *dir, WCHAR* mask );
 
struct TAGdata //ну тут класс,всё ясно
{
        char tag[3];
        char title[30];
        char artist[30];
        char album[30];
        char year[4];
        char comment[30];
        char genre;
};
 
 
 
int main()
{
 
 showFiles(L"C:\\...hello world\\",L"*.mp3*");//вызов функции,она возьмет лишь мп3,вместо точек был полный путь,он длинный,но с ним всё в порядке
    //getchar();
    system("pause");
    return 0;
}
 
 
   void showFiles( WCHAR* dir, WCHAR* mask )
    {
        HANDLE hFind;
        WIN32_FIND_DATA find_data;
        WCHAR f_dir[MAX_PATH];
 
        wcscpy(f_dir,dir);
        wcscat(f_dir,mask);
 
        hFind=FindFirstFileW((LPCWSTR)f_dir,&find_data);
        if (hFind != INVALID_HANDLE_VALUE)
            do
            {
                if(!(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){ //туманно понимаю,что тут происходит,но оно создает список из всех файлов  папке,а это так нужно
                    printf("%ls\n",find_data.cFileName );//печатаем название файла
                    //дальше будем читать инфу с тегов каждого файла
    TAGdata test;
    ifstream mp3File; 
    mp3File.open (find_data.cFileName, ios::binary );
        mp3File.seekg (-128, ios::end);
    mp3File.read(reinterpret_cast <char *>(&test), 128);
    mp3File.close(); //всё,победа,инфа считана
    cout <<test.artist << endl;// выведем исполнителя, просто так)
                CreateDirectoryA(test.artist, NULL);//создаём папку с именем исполнителя,всё работает как и нужно
                MoveFile(find_data.cFileName, test.artist и как тут поступить?); //тотальный ступор ( осталось последнее,переместить его,
                                                            //взять файл удаеться без проблем,но как указать куда нужно его переместить??
                }
            }while(FindNextFile(hFind,&find_data));
            
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
08.08.2013, 19:23     Сгруппировать песни MP3 с одинаковым исполнителем #2
QFile Class методы копировать и удалить путь относительно текушего

Добавлено через 1 минуту
bool QFile::copy ( const QString & newName )
Copies the file currently specified by fileName() to a file called newName. Returns true if successful; otherwise returns false.

bool QFile::remove ()
Removes the file specified by fileName(). Returns true if successful; otherwise returns false.
The file is closed before it is removed.

так проще по мойму
TimeToWork
4 / 4 / 0
Регистрация: 13.04.2013
Сообщений: 25
08.08.2013, 19:41     Сгруппировать песни MP3 с одинаковым исполнителем #3
заюзай rename.
http://www.cplusplus.com/reference/cstdio/rename/
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.08.2013, 19:48     Сгруппировать песни MP3 с одинаковым исполнителем #4
MoveFile

Добавлено через 35 секунд

Не по теме:

Цитата Сообщение от Winorun Посмотреть сообщение
QFile Class методы копировать и удалить путь относительно текушего
где в коде ТС хоть намек на использование Qt ? зачем такое советовать?

Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
09.08.2013, 10:15  [ТС]     Сгруппировать песни MP3 с одинаковым исполнителем #5
Jupiter, Читал статью, но так и не понял, что делать...Можете написать строчку, которую надо туда вставить?
castaway
09.08.2013, 10:20
  #6

Не по теме:

Chernobyl, зачем ты пишешь такую программу, если не можешь справиться с документацией к одной функции с двумя очевидными параметрами?

Chernobyl
211 / 211 / 67
Регистрация: 30.09.2012
Сообщений: 526
09.08.2013, 10:31  [ТС]     Сгруппировать песни MP3 с одинаковым исполнителем #7
castaway, я только учусь, но в процессе я подумал, что было бы удобно иметь такую программу, заодно и научился бы считывать тэги ИД3. Пока учусь азов с книги Страуструпа, вышло по камушкам собрать вот эту прогу, но осталась последняя строка которую не могу осилить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2013, 10:36     Сгруппировать песни MP3 с одинаковым исполнителем
Еще ссылки по теме:

C++ Вывести на экран тех людей с одинаковым телефоном
Сделать минусовку песни C++
C++ Сгруппировать слова текста латиницей в 26 строк по алфавиту

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 10:36     Сгруппировать песни MP3 с одинаковым исполнителем #8
Тебе надо отделить имя файла от пути.
Пример с SO:
C++
1
2
3
4
5
6
7
void split_path_file(char** p, char** f, char *pf) {
    char *slash = pf, *next;
    while ((next = strpbrk(slash + 1, "\\/"))) slash = next;
    if (pf != slash) slash++;
    *p = strndup(pf, slash - pf);
    *f = strdup(slash);
}
http://stackoverflow.com/questions/1...-path-and-file
Yandex
Объявления
09.08.2013, 10:36     Сгруппировать песни MP3 с одинаковым исполнителем
Ответ Создать тему
Опции темы

Текущее время: 02:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru