[QT]QString관련 정리

2016. 11. 10. 20:09제2외국어/QT

QString을 사용하면서 많이 사용되었던 부분들 정리합니다.
계속 추가해 나가겠습니다.


1. QString conver to char*

: 작업할 때 은근히 C라이브러리들이 많아서 C소스에서 QT로 사용할 때 또는 반대로, QString를 char* 로 변환하는 경우가 빈번히 발생
 QString의 자체 함수만으로는 제대로 안 되는 경우가 발생해서 찾아봤습니다.

- QString 의 자체 함수를 사용하는 방식

QString qstrTest = "test";
char *chrTest = qstrTest.toStdString().c_str();


- QByteArray를 사용하는 방식(1)

QString qstrTest = "test";
QByteArray byteArray = qstrTest.toUtf8();
const char *chrTest = byteArray.constData();


- QByteArray를 사용하는 방식(2) 

QString qstrTest = "test";
QByteArray byteArray = qstrTest.toLocal8Bit();
char *chrTest = byteArray.data();

참고 URL : http://doc.qt.io/qt-4.8/qstring.html
Keyword : Converting Between 8-Bit Strings and Unicode Strings

 QString provides the following four functions that return a const char * version of the string as QByteArraytoAscii(),toLatin1(), toUtf8(), and toLocal8Bit().

  • toAscii() returns an 8-bit string encoded using the codec specified by QTextCodec::codecForCStrings (by default, that is Latin 1).
  • toLatin1() returns a Latin-1 (ISO 8859-1) encoded 8-bit string.
  • toUtf8() returns a UTF-8 encoded 8-bit string. UTF-8 is a superset of US-ASCII (ANSI X3.4-1986) that supports the entire Unicode character set through multibyte sequences.
  • toLocal8Bit() returns an 8-bit string using the system's local encoding.

To convert from one of these encodings, QString provides fromAscii(), fromLatin1(), fromUtf8(), and fromLocal8Bit(). Other encodings are supported through the QTextCodec class. 


2. QString 에 들어있는 문자열의 라인수 확인하기

: 파일에 있는 데이터 또는 여러 문자열을 합치는 경우 등 QString 안에 있는 문자열의 Line 수를 체크할 필요가 있을 때 사용


- QStringList 와 split를 활용한 콤비네이션!

QString qstrTest = readFile(Path);                    // 특정 함수를 통해 파일을 읽어들인다고 가정 QStringList qstrList_Lines = qstrTest.split('\n');    // QStringList 를 통해 '\n' 기준으로 위에서 읽어들인 문자열을 자릅니다! qDebug() << qstrTest;                                 // 문자열 확인 qDebug() << "Count : " << qstrList_Lines.count();     // '\n' 으로 제대로 잘려져있는지 확인

for(int i=0; i<qstrList_Lines.count(); i++)

{

qDebug() << "[" + i + "] " + qstrList_Lines.at(i);         // 기존 문자열과 비교해보기

}