QString转化为const char *出现乱码问题
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                QString转化为const char *出现乱码问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                ???? 對于Qt項目開發中,常常會遇到QString和const char*的轉化問題,Qt也提供了響應的API接口,可以把QString轉化為QByteArray,然后再轉化為const char *,具體代碼如下:
QString string("helloWorld"); const char *str = string.toLatin1().data();??? 但是調用接口才發現,打印str時有時能夠顯示得到helloWorld有時候得到的卻是亂碼,通過查詢文檔發現調用toLatin1的過程中是把QString中的內容放到QByteArray中存儲起來,如果再調用data的接口,放到QByteArray中的數據則會被清除(類似于棧變量析構),因此將上述代碼變化一下則可以正確轉化:
QString string("helloWorld"); QByteArray array = string.toLatin1(); const char *str = array.data();??? 但是存在一個問題,如果是這樣的場景,如果const char*存在的生命周期比QByteArray要長的話,還是會出現const char*中的數據會被釋放,const char*的數據亂碼的情況,解決的方法可以額外深拷貝出一份數據保存下來或者用一個數組保存數據(如果是在對象中,將數組定義成成員變量就行了)
總結
以上是生活随笔為你收集整理的QString转化为const char *出现乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 哈利波特魔法觉醒弗立维回响强不强
 - 下一篇: 中医可以看好卵巢早衰吗