QString的目的是什么?

时间:2015-07-24 03:22:54

标签: c++ string qt std

我是C ++和Qt的新手。我已经和Qt Creator搞乱了几天,真正令我印象深刻的是GUI组件只接受了const QString&而不是stringstd::wstring。为了与此保持一致,我一直在努力接受并从大多数函数调用中返回QString,但是我发现自己要转换为std::string以及使用大多数标准库设施

我的问题是,如果QString是标准库的一部分,std::string的目的是什么?我想这对那些已经使用Qt并且不希望再次依赖#include <string>的人有益,但说实话,如果你想对你的应用程序做任何有用的事情,你需要std::string 。 (尤其适用于QChar,因为char是内置的。)

有人可以向我解释为什么这不是重新发明轮子以及这有助于跨平台?

2 个答案:

答案 0 :(得分:6)

  

我的问题是,如果QString是标准库的一部分,std::string的目的是什么?

我能想到的原因:

    QString复活之前,
  1. std::string已成为Qt图书馆的一部分。

  2. 它的界面包含很多Qt特定的类。因此,QString的使用情况不能轻易替换为std::string

  3. 它的界面比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类型等。