한국어
Qt
 
QString이 제공하는 주요 함수, 기능들로 문자열 다루는 방법을 예제를 통해 살펴보자.

문자열 초기화 및 정의
QString makersweb("makersweb.net");
QString str1 = "This is QString";
QString str2{"foobar"};

 

문자열의 길이, 사이즈, 카운트

QString str("macaron");

int length = str.length();
// length == 7

int size = str.size();
// size == 7

int count = str.count();
// count == 7

 

문자열 뒤에 이어 붙이기, 앞에 붙이기

// auto keyword from C++11
auto url = QString("makersweb");
url.append(".net");
// url == "makersweb.net"

url.prepend("https://");
// url == "https://makersweb.net"

 

null 과 empty 체크

QString address;

bool ret = address.isEmpty();
// ret == true
ret = address.isNull();
// ret == true

address = "";

ret = address.isEmpty();
// ret == true
ret = address.isNull();
// ret == false

 

split 특정문자를 기준으로 문자열 분리(자르기, 나누기)

QString address = "192.168.0.1";

QStringList list = address.split(".");
// list == ("192", "168", "0", "1")

 

문자열 치환

QString year    = "2025";
QString month   = "11";
QString day     = "20";

auto date = QString("%1. %2. %3").arg(year).arg(month).arg(day);
// date == "2025. 11. 20"

date = "%3. %2. %1";
auto newformat = date.arg(year, month, day);
// newformat == "20. 11. 2025"

 

지정된 인덱스 위치에있는 문자 반환

QString str("no smoking");

QChar c = str.at(3);
// c == 's'

 

문자열의 마지막 또는 앞의 문자 반환

QString str("dessert");

QChar c = str.back();
// c == 't'

c = str.front();
// c == 'd'

 

문자열의 끝에서 입력 수 만큼 제거

QString filename("file.txt");

filename.chop(3);
// str == "file."

 

문자열의 끝에서 입력 수 만큼 뺀 앞의 문자열을 반환

QString filename("config.ini");

auto name = filename.chopped(4);
// name == "config"

 

문자열의 왼쪽 또는 오른쪽 끝에서 입력 수 만큼의 문자열을 반환

QString str = "FREE WIFI";

QString left = str.left(4);
// left == "FREE"

QString right = str.right(4);
// right == "WIFI";

 

문자열의 내용을 지우고 null로 만듦.

QString text("text");

text.clear();
// text.isNull() == true
// text == ""

 

숫자를 문자열로, 문자를 숫자로 변환

auto str = QString::number(123);
// str == "123"

int num = str.toInt();
// num == 123

 

문자열에 특정 문자열 포함 여부(검색)

QString str = "Don't stop.";

bool ret = str.contains("don't", Qt::CaseInsensitive); // 대소문자 구분 없이
// ret == true

 

문자열에서 특정 문자열의 시작 위치(인덱스)

QString str = "Don't stop.";

int index = str.indexOf("stop", Qt::CaseInsensitive);
// index == 6

index = str.indexOf("go", Qt::CaseInsensitive);
// index == -1

 

C++ 표준 문자열로, 표준 문자열을 QString으로 변환

QString str("standard");

std::string stdstring = str.toStdString();

QString qstring = QString::fromStdString(stdstring);

 

특정 문자로 채움

QString str;

str.resize(10);
str.fill('*');
// str == "**********"

str.fill('@', 5); // string is resized(리사이징됨)
// str == "@@@@@"

 

특정 위치에 문자열 끼워넣기

QString str = "https://makersweb.net";

str.insert(8, QString("www."));
// str == "https://www.makersweb.net"

 

지정 위치부터 입력 수 만큼 삭제

QString str = "https://www.makersweb.net";

str.remove(8, 4);
// str == "https://makersweb.net"

 

문자열이 대문자 또는 소문자로 이뤄져 있는지 여부 반환. 문자열을 대, 소문자로 변환.

QString str("Foobar");

str.isUpper();
// false
str.isLower();
// false

auto upper = str.toUpper();
auto lower = str.toLower();

upper.isUpper();
// true
lower.isLower();
// true

 

특정 위치부터 지정 길이만큼 다른 문자열로 바꾸기

인덱스 위치에서 시작하는 n 개의 문자를 이후의 문자열로 대체하고이 문자열에 대한 참조를 반환.

QString str("you can't do it.");
QString can("can");

str.replace(4, 5, can);
// str == "you can do it."

 

앞의 문자를 뒤의 문자로 교체하기

QString address("08_AE_D6_B0_6F_E6");

address.replace("_", ":");
// address == "08:AE:D6:B0:6F:E6"

 

문자열의 한 섹션(특정 부분)을 반환.

필드는 왼쪽에서부터 0, 1, 2 등으로 번호가 매겨지며, 오른쪽에서 왼쪽으로는 -1, -2 등으로 번호가 매겨짐.

QString path = "/home/user/workspace/file.txt";

QString fileName = path.section("/", -1);
// fileName == "file.txt"

QString location = path.section("/", 0, -2);
// location == "/home/user/workspace"

 

참고: http://doc.qt.io/qt-5/qstring.html

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 110096
80 컨테이너에 적재된 객체를 편리하게 삭제하기 makersweb 2019.09.18 3447
79 C++로 구현된 모델을 QML의 ListView에서 참조 file makersweb 2019.09.07 7826
78 QSocketNotifier로 파일 디스크립터의 활동감지 makersweb 2019.08.28 4530
77 MCU용 Qt에 대해서 makersweb 2019.08.22 4097
76 [Qt News] Qt for Python을 위한 기술 비전 j2doll 2019.08.20 4353
75 열거형(enum)을 QML에서 사용하는 방법과 문자열(QString)로 얻기 makersweb 2019.08.20 6786
74 [Qt News] Qt 6 기술 비전 (Technical vision for Qt 6) [2] j2doll 2019.08.08 4597
73 [Qt News] Qt6 Git 개발 초기 단계 시작하기 j2doll 2019.08.02 4458
72 [Qt] Google Play의 향후 요구 사항을 준수하는 방법 [2] j2doll 2019.07.29 3413
71 Qt기반의 오픈소스 프로젝트들 - 2 운영자 2019.07.21 7062
70 QML, 이미지, 폰트등을 바이너리 리소스로 만들기 makersweb 2019.06.24 6189
69 Qt Creator에서 임베디드 장치로 deploy설정(Custom Process Step) file makersweb 2019.06.15 4971
68 Qt Quick Controls 2사용 및 스타일 설정 file makersweb 2019.06.07 8931
67 QML 강좌 - 동적 Listing (ListView) file makersweb 2019.06.01 12555
66 QtInstallerFramework로 온라인 설치프로그램(Online Installer)만드는 방법 [4] file makersweb 2019.05.28 8616
65 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 18789
64 QML에서 멀티 스레드(multithreading) 프로그래밍 file makersweb 2019.05.25 4895
63 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 16319
62 Qt기반의 오픈소스 프로젝트들 makersweb 2019.05.15 7805
61 Q_D매크로와 d-pointer file makersweb 2019.05.07 3646