5

ディレクトリと拡張子を保持しながら、Qtで特定のファイルパスのベースファイル名だけを変更するための最良/最も標準的な方法は何ですか?

それを行う標準的な方法はありますか、それとも正規表現を使用するだけですか?

私が持っているとしましょう:

/home/user/myfile.png

そして、次のように変更されます。

/home/user/myfile-modified.png
4

2 に答える 2

6

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ます。そうでなければ、これはうまくいくはずです。

于 2012-11-14T14:57:58.670 に答える
1

テストされていませんが、これはうまくいくかもしれません:

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();
于 2012-11-14T14:52:46.993 に答える