楼上那位兄弟回答得很好,本人又有了一些新启发,不过有一个问题是我那个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的,那为什么他们之间不能直接传值呢?而是要通过转换的,搞不懂