QT에서 공백 지우기는 간단하다.
공백만 지운다면 remove()를 사용하고 탭 또는 개행과 같은 문자까지 지우려면 simplified()를 같이 사용하면 된다.
단, 주의할 점은 두 함수가 어떻게 생겼냐는 것이다.
simplified()는 QString를 반환하고
QString simplified() const |
replace는 QString&를 반환한다.
QString& replace(const QChar *before, qsizetype blen, const QChar *after, qsizetype alen, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
따라서, 아래와 같이 쓰는 실수를 해서는 안된다.
QString testString4 = testString.simplified().remove(QChar(' ')); → OK
QString testString6 = testString;
testString6.simplified().remove(QChar(' ')); → Oooooooooooooops
https://doc.qt.io/qt-6/qstring.html
테스트해보자.
#include <QCoreApplication>
#include <QTimer>
#include <QDebug>
void run_main(void)
{
QString testString = " ABCD\t\tEFG\n 12345\r 56 \n";
fprintf(stderr, "- testString -------------------------\n");
fprintf(stderr, "%s", testString.toLocal8Bit().constData());
fprintf(stderr, "\n\n");
QString testString2 = testString.simplified();
fprintf(stderr, "- testString2 ------------------------\n");
fprintf(stderr, "%s", testString2.toLocal8Bit().constData());
fprintf(stderr, "\n\n");
QString testString3 = testString;
testString3.simplified();
fprintf(stderr, "- testString3 ------------------------\n");
fprintf(stderr, "%s", testString3.toLocal8Bit().constData());
fprintf(stderr, "\n\n");
QString testString4 = testString.simplified().remove(QChar(' '));
fprintf(stderr, "- testString4 ------------------------\n");
fprintf(stderr, "%s", testString4.toLocal8Bit().constData());
fprintf(stderr, "\n\n");
QString testString5 = testString.simplified();
testString5.remove(QChar(' '));
fprintf(stderr, "- testString5 ------------------------\n");
fprintf(stderr, "%s", testString5.toLocal8Bit().constData());
fprintf(stderr, "\n\n");
QString testString6 = testString;
testString6.simplified().remove(QChar(' '));
fprintf(stderr, "- testString6 ------------------------\n");
fprintf(stderr, "%s", testString6.toLocal8Bit().constData());
fprintf(stderr, "\n\n");
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTimer::singleShot(0,[](){
run_main();
QCoreApplication::exit(0);
});
return a.exec();
}
위의 코드를 실행하면 아래와 같다.
- testString -------------------------
ABCD EFG
56
- testString2 ------------------------
ABCD EFG 12345 56
- testString3 ------------------------
ABCD EFG
56
- testString4 ------------------------
ABCDEFG1234556
- testString5 ------------------------
ABCDEFG1234556
- testString6 ------------------------
ABCD EFG
56
'놀기 > Qt' 카테고리의 다른 글
[QT] 드라이브 목록 출력하기 (QStorageInfo) (0) | 2023.04.05 |
---|---|
[QT] Json array 읽기 (0) | 2023.03.04 |
Qt에서 cppcheck 사용하기 (0) | 2022.12.31 |
Qt Console Application 종료하기 (0) | 2022.12.30 |
Qt QLabel로 Drag & Drop Widget 만들기 (0) | 2022.10.11 |
댓글