2013-02-16 3 views
1

Я пытаюсь выяснить QString :: lastIndexOf и QString :: chop, чтобы удалить суффикс файла, поэтому я могу добавить его самостоятельно. Тем не менее, я получаю странный результат, который не имеет смысла для меня.Qt5 Удалить суффикс пути к файлу

Вот мой тестовый код:

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.

ответ

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.)

+2

Да! Благодарю выделение. Я не понимал, что .lastIndexOf с самого начала подсчитывает QString! И да, я тоже использовал QFileInfo! –

Смежные вопросы