QString的目的是什么?

What's the purpose of QString?

本文关键字:是什么 QString      更新时间:2023-10-16

我是一个c++和Qt的新手,我已经在Qt Creator上折腾了几天了,真正让我震惊的是GUI组件如何只接受const QString&而不是stringstd::wstring。为了与此保持一致,我一直试图从我的大多数函数调用中接受和返回QString,但是我发现自己转换到std::string很多,以使用大多数标准库设施。

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

谁能给我解释一下为什么这不是重新发明轮子,这对跨平台有什么帮助?

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

我能想到的原因:

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

  2. 它的接口包括很多Qt特定的类。因此,QString的使用不容易被std::string取代。

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

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

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

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