1. 首先manual中关于 QString::toStdString 的解析已经很多了。
2. 我们不看manual,单纯看这个问题,QString 是 Unicode 编码,std::string 是char 的序列,二者之间显然不具有一一对应关系。只是ASCII 码的话很好办(这也是toStdString能正确处理的);如果包含中文的话,显然有需要一个编码的过程,比如是编码成utf8,还是gb2312呢?
而 qtString.toLocal8Bit().data() 无非是一个将unicode的汉字进行编码的操作,无论是编码成utf8还是gb2312,显然都可以存入std::string
3. 利用 QString::toStdWString 将 QString 转成 std::wstring 不存在这种问题