- QString ⇔ char* 형 변환
QString 형에서 char* 형 및 반대로 변환하는 과정입니다.
QString 형에서 char* 형 변환 시에는 const char* 형을 사용해야 합니다.
// QString to char* QString str = "Test"; QByteArray arr = str.toUtf8(); const char* ptr = arr.constData(); // char * to QString char* ptr = "Test"; QString str = QString(ptr); |
- QString ⇔ char[] 형 변환
QString 형에서 char[] 형 및 반대로 변환하는 과정입니다.
QString 에서 char[] 변환 시에는 const char* 형으로 강제 형 변환 후 sprintf() 혹은 strcpy() 함수를 통해 char 배열에 복사합니다.
// QString to char[] QString str = "Test"; char arr[5]; sprintf(arr,"%s",(const char *)str.toStdString().c_str()); // strcpy(arr, (const char *)str.toStdString().c_str()); // char[] to QString char arr[5] = "Test"; QString str = QString(arr); |
- 문자열 길이, 사이즈, 카운트
length(), size(), count() 함수는 문자열의 문자 수를 반환하는 함수입니다.
QString str("coding"); int length = str.length();
int size = str.size();
int count = str.count(); |
- 문자열 앞, 뒤에 새로운 문자열 추가
기존 문자열 앞에 새로운 문자열을 추가할 경우. prepend() 함수를 사용합니다.
기존 문자열 뒤에 새로운 문자열을 추가할 경우. append() 함수를 사용합니다.
QString url = QString("coding-chobo"); url.prepend("https://"); // url == "https://coding-chobo";
url.append(".com"); // url == "https://coding-chobo.com"; |
- 문자열 Null 과 Empty 체크
Null은 어떤 값으로도 초기화 되지 않은 상태를 나타냅니다.
Empty는 초기화의 여부에 관계 없이 현재 QString이 비어있는 상태를 확인할 수 있습니다.
QString address; ret = address.isNull(); // ret == true address = ""; ret = address.isNull(); // ret == false |
- 특정문자를 기준으로 문자열 자르기
split() 함수를 사용해 특정 문자를 기준으로 문자열을 분리할 수 있습니다.
QString address = "192.168.0.1"; QStringList list = address.split("."); // list == ("192", "168", "0", "1") |
- 문자열 치환
char* 형에서 printf("%s", str); 와 같이 문자열을 치환하는 형식을 사용하지만,
QString 은 QString(%1, %2, %3).arg(str1).arg(str2).arg(str3) 형식을 사용합니다.
QString year = "2020";
QString date = QString("%1. %2. %3").arg(year).arg(month).arg(day); // date == "2020. 11. 27" QString newformat = date.arg(year, month, day); // newformat == "27. 11. 2020" |
- 특정 인덱스 위치에 있는 문자 반환
at() 함수는 특정 인덱스의 문자를 반환합니다.
해당 문자열의 처음 인덱스는 0부터 시작합니다.
QString str("coding chobo"); |
- 문자열 첫 문자, 마지막 문자 반환
front() 함수 사용 시 문자열의 첫 문자를 반환합니다.
back() 함수 사용 시 문자열의 마지막 문자를 반환합니다.
QString str("coding chobo"); a = str.front(); // c == 'c'
// c == 'o' |
- 문자열 끝에서 부터 입력 수 만큼 제거
chop() 함수 사용 시 입력한 숫자 만큼 뒤에서 부터 특정 문자열의 문자를 제거합니다.
QString filename("test.txt"); filename.chop(3); // str == "test." |
- 문자열 왼쪽 또는 오른쪽 끝에서 부터 입력 수 만큼 문자열을 반환
left() 함수 사용 시 왼쪽부터 입력한 숫자 만큼의 문자열을 반환합니다.
right() 함수 사용 시 오른쪽부터 입력한 숫자 만큼의 문자열을 반환합니다.
QString str = "TEST STRING";
|
- 문자열 내용 지우기
clear() 함수는 현재 QString 변수의 문자열 내용을 지우고 null로 만듭니다.
QString text("text"); |
- QString ⇔ int 변환
QString 형과 int 형 사이 간 변환하는 방법입니다.
QString str = QString::number(1234); // str == "1234" (10진수) QString str = QString::number(1234, 2); // str == "10011010010" (2진수) QString str = QString::number(1234, 16); // str == "4d2" (16진수) int num = str.toInt(); // num == 1234 |
- 문자열 특정 문자열 포함 여부(검색)
contains() 함수를 사용하여 문자열 내에 입력한 문자열이 포함되어 있는지 검색합니다.
기본적으로 대소문자를 구분하므로 Qt::CaseInsensitive를 통해 대소문자를 구분하지 않고 검색하도록 설정할 수 있습니다.
QString str = "This is test string"; bool ret = str.contains("test", Qt::CaseInsensitive); // 대소문자를 구분하지 않도록 한다. // ret == true |
- 문자열 특정 문자열의 시작 위치(인덱스)
indexOf() 함수는 입력한 문자열의 시작 위치를 반환해줍니다.
입력한 문자열이 존재하지 않을 경우 -1의 값을 반환하고, 대소문자를 구분하지 때문에 Qt::CaseInsensitive를 사용합니다.
QString str = "This is test string"; int index = str.indexOf("test", Qt::CaseInsensitive); // 대소문자를 구분하지 않도록 한다. // index == 8 index = str.indexOf("are", Qt::CaseInsensitive); // 대소문자를 구분하지 않도록 한다. // index == -1 |
- C++ 표준 문자열 QString으로 변환
C++ 표준 문자열인 string을 QString 형태로 변환하는 방법입니다.
QString str("standard"); |
- 특정 문자로 채우기
QString 변수의 리사이즈 설정 후 해당 변수를 특정 문자로 채우는 방법입니다.
QString str;
str.fill('*', 5); // string is resized(리사이징됨) |
- 특정 위치에 문자열 끼워넣기
QString 변수의 특정 위치에 문자열을 끼워 넣는 방법입니다.
맨 앞에 끼워 넣으려면 0번 값을 입력. 특정 위치의 position 값을 입력하시면 됩니다.
QString url = "https://coding-chobo.tistory.com";
url.insert(8, QString("www.")); // url = "https://www.coding-chobo.tistory.com" |
- 지정 위치부터 입력 수 만큼 삭제
QString 변수의 특정 위치의 문자열을 삭제할 수 있습니다.
remove() 함수에 지울 문자열의 시작 위치, 지우고 싶은 길이 값을 차례로 입력합니다.
QString url = "https://www.coding-chobo.tistory.com"; str.remove(8, 4); |
- 문자열 내 대소문자 확인 및 변환
해당 문자열이 대문자, 소문자로만 이루어져 있는지 isUpper(), isLower() 함수를 통해 확인하고,
대문자 혹은 소문자로의 변환을 원할 경우 toUpper(), toLower() 함수를 사용할 수 있습니다.
// 문자열 대소문자 확인 QString str("coding"); str.isUpper(); // false str.isLower(); // true // 문자열 대소문자 변환 QString upper = str.toUpper(); QString lower = str.toLower(); upper.isUpper(); // true lower.isLower(); // true |
- 특정 위치 문자열 변경
특정 위치의 문자열을 선택하여 입력한 문자열로 대체합니다.
replace() 함수에 시작 위치, 대체할 길이를 차례로 입력합니다.
QString str("This is apple"); QString repstr("peach"); str.replace(8, 5, repstr); // str == "This is peach" |
- 문자열 한 섹션(특정 부분)을 반환
필드는 왼쪽에서부터 0, 1, 2 ... 순서로 번호가 매겨지며, 오른쪽에서 왼쪽으로는 -1, -2 순서로 번호를 매깁니다.
QString path = "/home/user/file.txt"; QString fileName = path.section("/", 3); // fileName == "file.txt"
QString location = path.section("/", 2, 3); // location == "user/file.txt" |
'Qt' 카테고리의 다른 글
QProcess 외부 실행 프로그램 종료 정보받기 (0) | 2020.11.10 |
---|---|
QSplitter 클래스로 Widget 크기 조절하기 (0) | 2020.11.04 |
Qt Designer 에서 styleSheet 사용하기 (0) | 2020.10.23 |
QTableView에 ComboBox 삽입 및 고정하기 (0) | 2020.10.19 |
Qt Remote Debugging (0) | 2020.06.12 |