QString 的目的是什么?
What's the purpose of QString?
我是 C++ 和 Qt 的新手。这几天我一直在研究 Qt Creator,真正让我印象深刻的是 GUI 组件只接受 const QString&
而不是 string
或 std::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?
我能想到的原因:
QString
在 std::string
出现之前就已经是 Qt 库方式的一部分了。
它的界面包括很多Qt特有的类。因此,QString
的用法不能轻易替换为 std::string
.
它的界面比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
类型等相互转换的辅助方法
我是 C++ 和 Qt 的新手。这几天我一直在研究 Qt Creator,真正让我印象深刻的是 GUI 组件只接受 const QString&
而不是 string
或 std::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
ifstd::string
is part of the standard library?
我能想到的原因:
QString
在std::string
出现之前就已经是 Qt 库方式的一部分了。它的界面包括很多Qt特有的类。因此,
QString
的用法不能轻易替换为std::string
.它的界面比
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
类型等相互转换的辅助方法