1

QString::lastIndexOfとQString::chopを理解してファイルからサフィックスを削除しようとしているので、自分でサフィックスを追加できます。しかし、私には意味のない奇妙な出力が得られます。

これが私のテストコードです:

QString filename = "C:/Users/Ir77/Desktop/a.png";
qDebug() << "Filename is " << filename;
QString y = '.';
int x = filename.lastIndexOf(y, -1);
qDebug() << "Last index of . is " << x;
filename.chop(x);
qDebug() << "filename is now " << filename;

そして、これが私がそれから得たqDebug()情報です:

Filename is  "C:/Users/Ir77/Desktop/a.png" 
Last index of . is  23 
filename is now  "C:/U" 

最後の「.png」だけを削除させようとしています。23がどこから来たのかわかりません。

4

1 に答える 1

3

QString::chop() は、文字列の末尾から文字を削除します。「。」は 23 番目 (0 ベース) の文字ですが、chop() を呼び出すと 23 文字が削除され、「C:/U」が残ります。

http://doc.qt.digia.com/4.7-snapshot/qstring.html#chop

QFileInfo を使用して作業を行うことを検討しましたか? ( http://qt-project.org/doc/qt-4.8/qfileinfo.html )これにより、パスやファイル名の一部などを取得するための便利な関数が多数提供されます。

(私は Qt 4.8 に精通していますが、chop() は Qt 5.0 でも変更されていないと想定しています。)

于 2013-02-16T05:39:39.653 に答える