我是C ++和Qt的新手。我已经和Qt Creator搞乱了几天,真正令我印象深刻的是GUI组件只接受了const QString&
而不是string
或std::wstring
。为了与此保持一致,我一直在努力接受并从大多数函数调用中返回QString
,但是我发现自己要转换为std::string
以及使用大多数标准库设施
我的问题是,如果QString
是标准库的一部分,std::string
的目的是什么?我想这对那些已经使用Qt并且不希望再次依赖#include <string>
的人有益,但说实话,如果你想对你的应用程序做任何有用的事情,你需要std::string
。 (尤其适用于QChar
,因为char
是内置的。)
有人可以向我解释为什么这不是重新发明轮子以及这有助于跨平台?
答案 0 :(得分:6)
我的问题是,如果
QString
是标准库的一部分,std::string
的目的是什么?
我能想到的原因:
QString
复活之前, std::string
已成为Qt图书馆的一部分。
它的界面包含很多Qt特定的类。因此,QString
的使用情况不能轻易替换为std::string
。
它的界面比std::string
丰富得多。
答案 1 :(得分:5)
QString
优于std::string
的一个优点是,编写与平台无关的代码更容易。对于Unicode支持,大多数平台使用UTF-8编码,而Windows使用UTF-16编码。
虽然char
在所有平台wchar_t
上的大小相同,但却引起混淆。因此std::wstring
中字符的大小因平台而异。
QString
通过在所有平台上使用UTF-16编码消除了这种混淆。如果您需要与特定于平台的代码进行交互,QString
提供了帮助方法来转换为UTF-8,UTF-32,本地std
类型等。