Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Chernobyl
218 / 218 / 69
Регистрация: 30.09.2012
Сообщений: 545
1

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

08.08.2013, 18:47. Просмотров 961. Ответов 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
Ответы с готовыми решениями:

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

Сгруппировать код в функцию
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;math.h&gt; using namespace...

Сгруппировать элементы массива
Сгруппировать положительные элементы в начале, а отрицательные в конце...

Сгруппировать гласные и согласные буквы
Сгруппировать в массиве символы. Сначала идут гласные а потом согласные буквы...

Сгруппировать повторяющиеся соседние элементы последовательности
Задана последовательность целых чисел. Требуется сгруппировать повторяющиеся...

7
Winorun
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
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
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.08.2013, 19:48 4
MoveFile

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

Не по теме:

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

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

Не по теме:

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

0
Chernobyl
218 / 218 / 69
Регистрация: 30.09.2012
Сообщений: 545
09.08.2013, 10:31  [ТС] 7
castaway, я только учусь, но в процессе я подумал, что было бы удобно иметь такую программу, заодно и научился бы считывать тэги ИД3. Пока учусь азов с книги Страуструпа, вышло по камушкам собрать вот эту прогу, но осталась последняя строка которую не могу осилить.
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 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

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

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

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


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

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

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