我是C++和Qt的新手.我已经和Qt Creator搞乱了几天,真正让我印象深刻的是GUI组件只接受了一个const QString&而不是一个string或一个std::wstring.为了与此保持一致,我一直在尝试接受并QString从大多数函数调用返回,但是我发现自己要转换为std::string大量使用大多数标准库工具.
我的问题是,QStringif std::string是标准库的一部分是什么目的?我想这对那些已经在使用Qt并且不想要另外依赖的人有益#include <string>,但说实话,std::string如果你想对你的应用程序做任何有用的事情,你将需要它.(这特别适用QChar,因为char是内置的.)
有人可以向我解释为什么这不是重新发明轮子以及这有助于跨平台?
我的问题是,
QStringifstd::string是标准库的一部分是什么目的?
我能想到的原因:
QString在std::string生活之前,它一直是Qt图书馆的一部分.
它的界面包含很多Qt特定的类.因此,使用QString不能轻易取代std::string.
它的界面比它丰富得多std::string.
的一个优点QString在std::string是,它更容易编写独立于平台的代码.对于Unicode支持,大多数平台使用UTF-8编码,而Windows使用UTF-16编码.
更令人困惑的char是,虽然a 在所有平台wchar_t上的大小都相同但并非如此.因此,角色的大小std::wstring因平台而异.
QString通过在所有平台上使用UTF-16编码消除了这种混淆.如果需要与特定于平台的代码进行交互,请QString提供帮助方法以转换为UTF-8,UTF-32,本机std类型等.