樓上那位兄弟回答得很好,本人又有了一些新啟發,不過有一個問題是我那個QString是從
QFileDialog::getExistingDirectory()得來的,所以我不能控制它得來的方式,像樓上所說的用toUtf8我也用過,當時調試的時候也是錯誤的!不過我仔細的揣摩了一下,發現原來QT有一個專門用于編碼之間的轉換的類——QTextCodec,然后我們的中文編碼又是——gb18030,而QT對字符串的處理與儲存都是用的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的,那為什么他們之間不能直接傳值呢?而是要通過轉換的,搞不懂