ディレクトリと拡張子を保持しながら、Qtで特定のファイルパスのベースファイル名だけを変更するための最良/最も標準的な方法は何ですか?
それを行う標準的な方法はありますか、それとも正規表現を使用するだけですか?
私が持っているとしましょう:
/home/user/myfile.png
そして、次のように変更されます。
/home/user/myfile-modified.png
QFileInfoを使用して、パスの側面を解析します。
QFileInfo original("/home/user/myfile.png");
QString newPath = original.canonicalPath() + QDir::separator() + original.baseName() + "-modified";
if (!original.completeSuffix().isEmpty())
newPath += "." + original.completeSuffix();
警告: ファイル名が「.」で終わっていても拡張子がない場合、「.」は削除されます。つまり、/home/user/myfile.
に名前が変更され/home/user/myfile-modified
ます。そうでなければ、これはうまくいくはずです。
テストされていませんが、これはうまくいくかもしれません:
const char* filePath = "/home/user/myfile.png";
QFileInfo file(filePath);
QDir dir = file.dir();
QString baseName = file.baseName();
QString baseNameModified = ...; // insert here your logic for modifying filename
QFileInfo fileModified(dir, baseNameModified);
QString filePathModified = fileModified.filePath();