2014년 8월 28일 목요일

[QT] QString -> char * 변환

소개
QT 를 이용해 개발할 기회가 생겨서 QString 의 존재에 대해 처음 알게 되었고 char * 형으로 변환하는데 아래와 같은 어려움을 겪어서 옮겨 봅니다.

QString -> char * 변환(추출?)
QString 을 char * 형으로 변환 하는 방법은 아래와 같습니다.

참고: http://qt-project.org/forums/viewthread/13976

QString text = "String";
const char * str = text.toStdString().c_str();

또는

QString text = "String";
const char * str = text.toUtf8().constData();

주의
주의할 점은 const char * str 값이 변할 수도 있기 때문에 바로 다른 buffer 에 복사 하셔야 합니다.

QString text1 = "String1";
QString text2 = "String2";
const char * str1 = text1.toUtf8().constData();
const char * str2 = text2.toUtf8().constData();

printf("str1:%s, str2:%s\n", str1, str2);

이러면 str1 과 str2 는 알수 없는 값이 출력됩니다.


아래와 같이 바로 다른 buffer 에 복사해야 합니다.

QString text1 = "String1";
QString text2 = "String2";
char str1[1024] = {0,};
char str2[1024] = {0,};
qsnprintf(str1, sizeof(str1), "%s", text1.toUtf8().constData());
qsnprintf(str2, sizeof(str2), "%s", text2.toUtf8().constData());




댓글 2개:

  1. 감사합니다. 복사를 해야하군요.

    답글삭제
    답글
    1. QByteArray같은 경우에는 그냥 data나 constData함수를 써도 안전한듯 합니다.

      삭제