QString 的目的是什么?

What's the purpose of QString?

我是 C++ 和 Qt 的新手。这几天我一直在研究 Qt Creator,真正让我印象深刻的是 GUI 组件只接受 const QString& 而不是 stringstd::wstring。为了与此保持一致,我一直在尝试从我的大多数函数调用中接受和 return QString,但是我发现自己在 std::string 之间进行了很多转换以使用大部分标准图书馆设施。

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

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

My question here is, what's the purpose of QString if std::string is part of the standard library?

我能想到的原因:

  1. QStringstd::string 出现之前就已经是 Qt 库方式的一部分了。

  2. 它的界面包括很多Qt特有的类。因此,QString 的用法不能轻易替换为 std::string.

  3. 它的界面比std::string丰富了很多。

QString 优于 std::string 的一个优点是更容易编写与平台无关的代码。对于 Unicode 支持,大多数平台使用 UTF-8 编码,而 Windows 使用 UTF-16 编码。

更令人困惑的是,char 在所有平台上的大小都相同 wchar_t 则不同。所以 std::wstring 中字符的大小会因平台而异。

QString 通过在所有平台上使用 UTF-16 编码消除了这种混淆。如果您需要与特定于平台的代码进行交互,QString 提供了与 UTF-8、UTF-32、本机 std 类型等相互转换的辅助方法