Qt 에서 QString 대상 이 toStdString().data()를 사용 하면 오류 가 발생 합 니 다.

1178 단어 Qt
다음 예 를 보십시오.
#include 
#include 
#include 
int main(int argc, char *argv[])
{
    QString m("china");
    QString n("great");

    const char *mstr = m.toStdString().data();
    printf("mstr = %s
", mstr); const char *nstr = n.toStdString().data(); printf("nstr = %s
", nstr); return 0; }

출력 결과 뻔:mstr=china nstr=great
하지만 내 가 이렇게 쓰 면:
#include 
#include 
#include 
int main(int argc, char *argv[])
{
    QString m("china");
    QString n("great");

    const char *mstr = m.toStdString().data();    
    const char *nstr = n.toStdString().data();
    printf("mstr = %s
", mstr); printf("nstr = %s
", nstr); return 0; }

답 은 변 하지 않 을 것 이다.그러나 하필 그렇지 않다.답 은 mstr=great nstr=great 이다.
내 가 설 치 를 마 쳤 을 때 문자열 출력 이 어 지 러 운 문 제 를 만 났 는데 바로 여기 서 한 짓 이 었 다.처음에 믿 지 않 았 는데 나중에 이런 작은 프로그램 을 써 서 해 보 았 는데 정말 문제 가 있 었 다.Qt 에서 이 tostdString().data()가 어떻게 실현 되 었 는 지 모 르 겠 습 니 다.앞으로 주의해 야 합 니 다.앞 에 있 는 방식 대로 써 야 합 니 다.

좋은 웹페이지 즐겨찾기