我在为图形和GUI组件工作的软件系统中广泛使用Qt。但是,对于大多数内部算法和数据处理而言,Qt起着较小的作用。可互换地使用std :: string和QString
我经常会遇到需要将std :: string转换为QString或反之亦然。我倾向于尽可能多地使用std :: string,并且在需要将字符串传递给类似于文件系统的Qt类时使用QString 只有。
正如我今天上午编程时,它打击了我可能是糟糕的设计,让std :: string和QString都散布在我的代码中。我应该完全切换到QString?有没有其他人遇到这种设计选择?
Qt提供了很多与STL相同的功能,但由于Qt不够标准化和稳定,所以我仍然犹豫不决。
'QString'有一个'toStdString()'方法。请参阅:http://doc.trolltech.com/4.5/qstring.html#toStdString。要从'std :: string'创建'QString',你可以使用这个构造函数:http://doc.trolltech.com/4.5/qstring.html#QString-7 – yasouser 2011-06-01 18:37:57
@yasourer:是的,但那些依赖于全局设置字符编码。这些函数来自一个库,它从另一个库中获得'std :: string',它总是包含UTF-8。 – 2011-06-01 20:18:17
通过传递长度以及返回QString :: fromUtf8(s.c_str(),s.size())和auto buf = s,即使字符串包含嵌入的NUL,也可以改进这些函数的工作。 toUtf8();返回std :: string(buf.data(),buf.size());'。 – 2017-08-24 08:28:54