& Quot; .mp3 & Quot; метаданные из TagLib в QString, Qt, переполнение стека

Я пытаюсь переименовать файлы .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 ()
+ «)»;

Как я могу решить это?

0

Решение

Используйте строку формата для построения строки для нового имени:

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());
0

Другие решения


По вопросам рекламы [email protected]