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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Chernobyl
214 / 214 / 67
Регистрация: 30.09.2012
Сообщений: 545
#1

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

08.08.2013, 18:47. Просмотров 924. Ответов 7
Метки нет (Все метки)

Когда-то писал это и уже почти сделал, но остановился на самом последнем моменте, вообще на последнем, так жаль, поетому очень сильно прошу о помощи.

Она должна определять в одной папке(пока это папка,где находиться сама прога) песни формата мп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));
            
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2013, 18:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сгруппировать песни MP3 с одинаковым исполнителем (C++):

Сгруппировать элементы массива - C++
Сгруппировать положительные элементы в начале, а отрицательные в конце массива без сохранения порядка в каждой группе ...

Сделать минусовку песни - C++
Привет. Вопрос собственно так и звучит, так сделать минус песни? Может есть библиотека с такими возможностями? Или какой то туториал, или...

Сгруппировать гласные и согласные буквы - C++
Сгруппировать в массиве символы. Сначала идут гласные а потом согласные буквы английского алфавита.Символы задаются случайно в коде...

Сгруппировать повторяющиеся соседние элементы последовательности - C++
Задана последовательность целых чисел. Требуется сгруппировать повторяющиеся соседние элементы, как в примерах. Вход 7 1 1...

Сгруппировать слова текста латиницей в 26 строк по алфавиту - C++
Написать такую программу. Выводить слова добавляя необходимое количество переходов на новую строку (по алфавиту) Если например первая...

Mp3 плеер. Автоматическое воспроизведение следующей песни - C#
Всем доброго времени суток) Пишу мп3 плеер..и вот столкнулся с такой траблой..как сделать так, что бы когда кончается песня.. следующая...

7
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
08.08.2013, 19:23 #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.

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

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

Не по теме:

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

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

Не по теме:

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

0
Chernobyl
214 / 214 / 67
Регистрация: 30.09.2012
Сообщений: 545
09.08.2013, 10:31  [ТС] #7
castaway, я только учусь, но в процессе я подумал, что было бы удобно иметь такую программу, заодно и научился бы считывать тэги ИД3. Пока учусь азов с книги Страуструпа, вышло по камушкам собрать вот эту прогу, но осталась последняя строка которую не могу осилить.
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
09.08.2013, 10:36 #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
0
09.08.2013, 10:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2013, 10:36
Привет! Вот еще темы с ответами:

Как поставить в Mp3 плеере на кнопку окрытие не одного mp3 файла ?? - Delphi
Привет ! У меня такая проблема я пишу mp3 плеер на Delphi и у меня в нём есть кнопка открытия файлов и при окрытии mp3 файлов можно открыть...

Как определить длительность Mp3 файла. MP3 плеер на библиотеке BASS 2.4 - Delphi
В процессе поиска ответов я наткнулся на эту тему http://www.cyberforum.ru/delphi-beginners/thread83454.html Судя по всему, создателю той...

Задача Гиа: какая фигура появится на экране при выполнении Исполнителем Черепашка данного алгоритма? - Информатика
Исполнитель Черепашка перемещается на экране компьютера, оставляя след в виде линии. В каждый конкретный момент известно положение...

MySQL Сгруппировать - PHP БД
Как сгруппировать записи сначала по одному полю, после того как сгруппировали по первому полю. Далее сгруппировать по второму...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.