樓上那位兄弟回答得很好,本人又有了一些新啟發(fā),不過(guò)有一個(gè)問(wèn)題是我那個(gè)QString是從
QFileDialog::getExistingDirectory()得來(lái)的,所以我不能控制它得來(lái)的方式,像樓上所說(shuō)的用toUtf8我也用過(guò),當(dāng)時(shí)調(diào)試的時(shí)候也是錯(cuò)誤的!不過(guò)我仔細(xì)的揣摩了一下,發(fā)現(xiàn)原來(lái)QT有一個(gè)專門用于編碼之間的轉(zhuǎn)換的類——QTextCodec,然后我們的中文編碼又是——gb18030,而QT對(duì)字符串的處理與儲(chǔ)存都是用的Unicode,具體代碼如下:
QTextCodec *code;
QString strImage;
std::string strbuffer;
strImage = QFileDialog::getExistingDirectory(this, "Select image path");
code = QTextCodec::codecForName("gb18030");
strBuffer = code->fromUnicode(strImage).data();
這樣我的strBuffer里面就得到了正確的中文文件目錄,但是我還是有搞不懂的地方就是QString是用的unicode,而std::string也是支持Uncode的,那為什么他們之間不能直接傳值呢?而是要通過(guò)轉(zhuǎn)換的,搞不懂