QT中 QString转化为String时候的toStdString与toLocal8Bit 的区别

今天修改项目的时候发现一个问题,在读取路径的时候,当用到toStdString的时候,程序加载不出来路径所指定的位置,但是用到toLocal8Bit的时候,系统就可以加载出来路径所指定的位置:

例如:

OpenSP::sp m_pNavigationPathContainer;

当用到toStdString的时候:

m_pNavigationPathContainer->saveToFile(m_kflPath.toStdString());

这样是加载不出来路径的;

当用到toLocal8Bit的时候:

m_pNavigationPathContainer->saveToFile(std::string((const char *)m_kflPath.toLocal8Bit()));

这样是可以加载出来路径的;



另外对于QString转化为String的时候,有时候用toStdString没有任何问题,但是用到toLocal8Bit的时候就会出现乱码:

例如:

OpenSP::sp m_pUtility;

OpenSP::sp pFrame = m_pUtility->createNavigationKeyframe();

当用到toStdString的时候:

pFrame->setName(strFrameName.toStdString());

这样是没有任何问题的;

当用到toLocal8Bit的时候:

pFrame->setName(std::string((const char *)strFrameName.toLocal8Bit()));

这样是会出现乱码的;



具体什么原因我也不是很清楚,希望看到的人,如果会的话,请不吝赐教,谢谢了!









你可能感兴趣的:(qt)