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 기반) char이지만 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를 사용하여 끝났습니다! –