2015-05-06 56 views
0

我試圖用TagLib格式爲「artist - album - song(year).mp3」來重命名.mp3文件,並將它們移動到一個新目錄中,到目前爲止,我使用「.mp3」元數據從TagLib到QString,Qt,C++

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」所需的值,我得到

error: invalid operands of types 'const char*' and 'const char [4]' to binary 'operator+' 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

謝謝你,工作就像一個魅力 – Jadelabe