从TagLib到QString,Qt,C ++的“.mp3”元数据

时间:2015-05-06 15:46:00

标签: c++ qt taglib qstring

我正在尝试使用TagLib重命名.mp3文件,格式为“artist - album - song(year).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()   +“)”;

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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());