Я пытаюсь переименовать файлы .mp3 с помощью TagLib в формате «Artist — Album — Song (год) .mp3» и переместить их в новый каталог, так что я использую
TagLib::FileRef f(dirIt.filePath().toStdString().c_str());
QString newName = f.tag()->artist().toCString() + " - " + f.tag()->album().toCString() + " - " + (QString) f.tag()->track() + " (" + (QString) f.tag()->year() + ")";
QString newPath = NewDir.absolutePath() + QDir().separator() + newName + ".mp3";
QFile::copy(oldDir, newPath);
QFile::remove(dirIt.filePath().toStdString().c_str());
Где «dirIt» — это QDirIterator (я перебираю папку, в которой находятся песни), а «oldDir» — Qstring с абсолютным путем к папке, которую я перебираю.
Моя проблема возникает, когда я пытаюсь дать «newName» желаемое значение, я получаю
ошибка: недопустимые операнды типов ‘const char *’ и ‘const char [4]’ для
бинарный оператор +
QString newName = f.tag () -> artist (). ToCString () + «-» + f.tag () -> album (). ToCString () +
«-» + (QString) f.tag () -> track () + «(» + (QString) f.tag () -> year ()
+ «)»;
Как я могу решить это?
Используйте строку формата для построения строки для нового имени:
QString newName("%1% - %2% - %3% (%4%)");
newName = newName.arg(f.tag()->artist().toCString()).arg(f.tag()->album().toCString()).arg(f.tag()->track()).arg(f.tag()->year());