我在我正在开发的图形和 GUI 组件软件系统中广泛使用 Qt。然而,对于大多数内部算法和数据处理来说,Qt 发挥的作用较小。
我经常会遇到从 std::string 转换为 QString 的需要,反之亦然。我的倾向是尽可能使用 std::string 并使用 QStringonly当我需要将字符串传递给 Qt 类(例如那些使用文件系统的类)时。
当我今天早上编程时,我突然意识到,在我的代码中同时使用 std::string 和 QString 可能是一个糟糕的设计。我应该完全切换到 QString 吗?还有其他人遇到过这种设计选择吗?
Qt 提供了许多与 STL 相同的功能,但我仍然犹豫是否要完全切换,因为 Qt 的标准化和稳定性较差。
是的,我以前也遇到过这种情况。我开发的程序自始至终都使用 Qt,但我必须将其连接到预期的库std::string
。的好处是QString
最大的问题是它明确使用 Unicode,而 C++ 标准库对编码不做任何保证。
解决方案是在该库的边界处进行转换
QString toQString(std::string const &s)
{
return QString::fromUtf8(s.c_str());
}
std::string fromQString(QString const &s)
{
return std::string(s.toUtf8().data());
}
自从图书馆产生std::string
包含 UTF-8。
你似乎想要的是完全相反的:使用std::string
整个过程并在 Qt 边界处进行转换。看起来完全没问题;比平时使用需要更多的工作QString
,但是当你需要非-的时候你就必须付出努力QString
- 无论如何接受库,并且您的非 GUI 组件不依赖于 Qt(万岁!)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)