更多的定制和实践问题,但它被认为是糟糕的形式,或高度不可取(选择你的解释不好)混合使用Qt库类型和类似的标准C++类型在一个程序中?Qt - 混合Qt和std :: C++类型
例如,坚持只使用QStrings用于字符串使用还是人们经常在源文件中混合使用QString和std :: string类型?
我已经继承了一些代码,包括在一个文件中使用QString和std :: string,并且想知道是否将所有内容都转换为一个或另一个。
更多的定制和实践问题,但它被认为是糟糕的形式,或高度不可取(选择你的解释不好)混合使用Qt库类型和类似的标准C++类型在一个程序中?Qt - 混合Qt和std :: C++类型
例如,坚持只使用QStrings用于字符串使用还是人们经常在源文件中混合使用QString和std :: string类型?
我已经继承了一些代码,包括在一个文件中使用QString和std :: string,并且想知道是否将所有内容都转换为一个或另一个。
我认为这真的归结为“这取决于你在做什么”。当然,更容易保持只有一种类型。然而,有时您需要传递std :: strings或传递QStrings,并且不进行转换可能会更好地提高性能。
另请注意,QStrings与std:strings不同。因此,在它们之间进行转换时(或选择仅使用某种类型)请记住这一点。
一般来说,我更喜欢使用QString
超过std::string
和Qt容器(如QList
,...)在std
容器中的代码,是紧耦合到Qt框架,反正没有它,就没有意义。在所有其他组件(如辅助库等)中,为了灵活性,我更喜欢使用标准的C++方式。
但我认为这是更主观的决定,因为类型通常很容易相互转换(而Qt容器也提供标准的一致性迭代器)。虽然在Qt高度集中的代码中,Qt容器可能会更好,尤其是与Qt的元对象和类型系统一起使用。
我想这是由你来决定的。不管怎么说,在两者之间进行转换需要一个字符串的副本,所以如果两者都需要转换,那么它的性能不好:例如QString::fromStdString和QString::fromStdWString。如果你使用Qt,我想你可能不仅仅使用QString,在这种情况下,大多数Qt类的方法都要求你提供QString。所以,写作可能会对性能造成不利影响。
同时考虑到std :: string从实现到实现略有不同,std :: string copy-on-write可能会显示不同的性能。
QStrings和C++字符串解决了不同的问题 - 主要区别在于QStrings明确地处理locales/encodings,而std :: strings不处理。
因此,对用户输入的所有数据以及要显示给用户的所有字符串使用QStrings,否则可能会丢失编码转换中的信息和/或使将来国际化应用程序变得更加困难。
对于任何我只需要char *等价物的地方,例如保持数据从地区/编码不适用的数据库中读取,我使用std :: strings,因为它们非Qt库更容易使用,并且数据不会通过任何编码转换。 但是,你必须明确地将它们添加到qt类型系统中,以便能够在信号/插槽参数中使用它们,一旦知道如何,这很容易。
但最后它是一个判断调用 - 只是为了让你的代码库更容易被新手访问,如果你使用的是非QtCore,那么在任何地方使用QString或者可能只是std :: string都可能更好-gui应用程序
您的链接已损坏。 –