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()가 어떻게 실현 되 었 는 지 모 르 겠 습 니 다.앞으로 주의해 야 합 니 다.앞 에 있 는 방식 대로 써 야 합 니 다.