交替使用std :: string和QString

| 我正在为图形和GUI组件开发的软件系统中广泛使用Qt。但是,对于大多数内部算法和数据处理,Qt发挥的作用较小。 我经常会遇到从std :: string转换为QString或反之亦然的需求。我倾向于尽可能多地使用std :: string,并且仅在需要将字符串传递给Qt类(例如与文件系统一起使用的类)时才使用QString。 当我今天早上在编程时,让我惊讶的是,在我的代码中同时散布std :: string和QString可能是一个糟糕的设计。我应该完全切换到QString吗?还有其他人遇到过这种设计选择吗? Qt提供了许多与STL相同的功能,但是由于Qt标准化程度和稳定性较低,我仍在犹豫是否完全切换。     
已邀请:
是的,我以前遇到过这种情况。我开发的程序在整个过程中都使用了Qt,但是我不得不将其连接到期望为“ 0”的库中。 “ 1”的好处是它显式使用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());
}
因为该库产生了包含UTF-8的“ 0”。 您似乎想要的恰恰相反:在整个过程中使用ѭ0并在Qt边界处进行转换。似乎完全可以;与使用using1ѭ相比,它需要花费更多的工作,但是无论如何,当您需要一个不接受
QString
的库时,您就必须付出更多的努力,而且您的非GUI组件也不依赖于Qt(呵呵!)。 。     
我想说的是在您的程序核心中使用“ 0”,并在您使用GUI部件时将其转换为“ 1”。如果您曾经想更改GUI工具包,那将更加容易。     

要回复问题请先登录注册