今天修改项目的时候发现一个问题,在读取路径的时候,当用到toStdString的时候,程序加载不出来路径所指定的位置,但是用到toLocal8Bit的时候,系统就可以加载出来路径所指定的位置:
例如:
OpenSP::sp<INavigationPathContainer> 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<IUtility> m_pUtility;
OpenSP::sp<INavigationKeyframe> pFrame = m_pUtility->createNavigationKeyframe();
当用到toStdString的时候:
pFrame->setName(strFrameName.toStdString());
这样是没有任何问题的;
当用到toLocal8Bit的时候:
pFrame->setName(std::string((const char *)strFrameName.toLocal8Bit()));
这样是会出现乱码的;
具体什么原因我也不是很清楚,希望看到的人,如果会的话,请不吝赐教,谢谢了!