Programming/QT

[QT] C++ std::string과 QString 간의 문자열 형 변환 방법

후유증 2019. 6. 18. 13:34

개요

QT C++로 프로그램을 작성하면, 타 라이브러리와의 연동을 위해 std::stringQString으로 변환하거나, 그 반대를 수행해야 하는 경우가 잦다.

이를 해결하기 위한 방법은 다음과 같다.

std::string -> QString

QString의 함수 이용

QStringstd::stringQString으로 변환해주는 함수 QString::fromStdString 함수를 제공한다

사용 예시

std::string str ="Hello, World!";
QString qstr = QString::fromStdString(str);

위의 방법을 사용하면 손쉽게 형 변환이 가능하다.

string pointer 이용

std::string을 QString으로 변경하기 위한, char 배열로 변경한 결과를 QString의 생성자에 넣어주면 된다.

이는 아래의 예제 코드처럼 작성하면 QString으로 형변환된다.

std::string str = "Hello, World!";
QString qstr = QString(str.c_str());

QString -> std::string

QT 프로그램에서 타 라이브러리의 함수를 호출하기 위해선, QString 변수를 std::string으로 변환해야 하는 경우도 발생한다.

이 역시도 QString 에서 QStringstd::string으로 변환해주는 함수 QString::toStdString을 제공한다.

QString qstr = "Hello, World!";
std::string str = qstr.toStdString();

결론

QT에서 제공하는 QString 클래스는 기존의 C++ 객체와의 호환을 위한 다양한 기능을 제공하며, 이를 통해 효율적인 코딩이 가능하다.

위에 언급한 것 이외에도 QStringQString QString::fromLocal8Bit(QByteArray*)QByteArray QString::toLocal8Bit() 같은 함수를 통해 QByteArray 또는 char*에서 QString로 혹은 그 반대로 변환할 수 있는 기능을 제공한다.