Qt5 Удалить суффикс пути к файлу

Я пытаюсь выяснить 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.

1

Решение

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]