SW Developer/Qt, QML
Qt QString 사용법 정리 (자주 쓰는 함수와 예시)
워크디포
2025. 6. 19. 23:32
이번 포스팅에서는 Qt 프로그래밍에서 자주 사용하는 문자열 클래스인 QString의 유용한 함수들과 실질적인 사용 예시를 정리해 보았습니다. 프로그래밍 시 자주 궁금한 케이스를 모아 효율적인 예시로 소개합니다. 제가 쓰면서 유용했던 것들을 정리해 봅니다.
1. 문자열의 앞부분만 비교하기 (startsWith)
특정 문자열이 지정한 접두어로 시작하는지 검사할 때 사용합니다.
QString text = "Hello, World!";
if (text.startsWith("Hello")) {
qDebug() << "텍스트가 'Hello'로 시작합니다.";
}
2. 문자열의 뒷부분만 비교하기 (endsWith)
특정 문자열이 지정한 접미어로 끝나는지 검사할 때 사용합니다.
QString text = "Hello, World!";
if (text.endsWith("World!")) {
qDebug() << "텍스트가 'World!'로 끝납니다.";
}
3. 특정 부분만 추출하기 (left, mid, right)
앞에서부터 추출 (left)
QString text = "Hello, World!";
QString leftPart = text.left(5); // "Hello"
중간에서 특정 길이만큼 추출 (mid)
QString text = "Hello, World!";
QString midPart = text.mid(7, 5); // "World"
중간에서부터 끝까지 추출 (mid)
mid에 시작위치만 넣으면, 끝까지 추출해 줍니다.
QString text = "Hello, World!";
QString midToEndPart = text.mid(7); // "World!"
뒤에서부터 추출 (right)
QString text = "Hello, World!";
QString rightPart = text.right(6); // "World!"
4. 특정 문자가 3번째 발견된 위치 기준으로 앞뒤 문자열 분리하기
특정 문자의 위치를 찾고 그 위치를 기준으로 문자열을 나누는 방법입니다.
QString text = "one,two,three,four,five";
int commaCount = 0;
int thirdCommaIndex = -1;
for (int i = 0; i < text.length(); ++i) {
if (text[i] == ',') {
commaCount++;
if (commaCount == 3) {
thirdCommaIndex = i;
break;
}
}
}
if (thirdCommaIndex != -1) {
QString front = text.left(thirdCommaIndex); // "one,two,three"
QString back = text.mid(thirdCommaIndex + 1); // "four,five"
}
위 내용은 일반적인 경우에 위와 같이 사용하고, indexOf 를 사용하면 아래와 같습니다.
QString text = "one,two,three,four,five";
int pos1 = text.indexOf(',');
int pos2 = text.indexOf(',', pos1 + 1);
int pos3 = text.indexOf(',', pos2 + 1);
if (pos3 != -1) {
QString front = text.left(pos3); // "one,two,three"
QString back = text.mid(pos3 + 1); // "four,five"
qDebug() << "앞부분:" << front;
qDebug() << "뒷부분:" << back;
}else{
qDebug() << "세번째 , 을 찾을 수 없습니다.";
}
5. 특정 문자로 문자열 나누기 (split)
문자열을 특정 문자를 기준으로 나눌 때 유용합니다.
쉼표(,)로 나누기
QString text = "apple,banana,grape";
QStringList fruits = text.split(',');
foreach (const QString &fruit, fruits) {
qDebug() << fruit;
}
콜론(:)과 괄호(()로 나누기
QString text = "Title:SubTitle:Text(ExtraInfo:ExtraInfo2):Text2";
// 괄호는 먼저 제거하되 닫는 괄호는 완전히 제거
QString processed = text;
processed.replace('(', ':');
processed.replace(')', '');
//"Title:SubTitle:Text:ExtraInfo:ExtraInfo2:Text2"; //요렇게 변함
// 이제 콜론 기준으로 나누기
QStringList result = processed.split(':', Qt::SkipEmptyParts);
// :: 으로된부분이 있을 수 있으므로, SkipEmptyParts를 사용함.
qDebug() << result;
6. 특정 문자열의 존재 여부 및 위치 확인 (contains, indexOf)
문자열 포함 확인 (contains)
QString text = "I love Qt programming!";
if (text.contains("Qt")) {
qDebug() << "문자열에 Qt가 포함되어 있습니다!";
}
문자열의 위치 확인 (indexOf)
QString text = "I love Qt programming!";
int position = text.indexOf("Qt"); // 7
7. 문자열 대소문자 변경하기 (toLower, toUpper)
소문자로 변경
QString text = "Hello World";
QString lower = text.toLower(); // "hello world"
대문자로 변경
QString text = "Hello World";
QString upper = text.toUpper(); // "HELLO WORLD"
QString의 함수들을 적절히 사용하면 Qt를 이용한 문자열 처리가 훨씬 쉬워집니다. 유용하게 활용해 보시길 바랍니다!