QString的目的是什么?
What's the purpose of QString?
我是一个c++和Qt的新手,我已经在Qt Creator上折腾了几天了,真正让我震惊的是GUI组件如何只接受const QString&
而不是string
或std::wstring
。为了与此保持一致,我一直试图从我的大多数函数调用中接受和返回QString
,但是我发现自己转换到std::string
很多,以使用大多数标准库设施。
我的问题是,如果std::string
是标准库的一部分,QString
的目的是什么?我想这将是有益的人谁已经在使用Qt,不想再依赖于#include <string>
,但说实话,你需要std::string
,如果你想做任何有用的应用程序。(这尤其适用于QChar
,因为char
是内置的。)
谁能给我解释一下为什么这不是重新发明轮子,这对跨平台有什么帮助?
我的问题是,如果
std::string
是标准库的一部分,QString
的目的是什么?
我能想到的原因:
-
QString
在std::string
出现之前就已经是Qt库的一部分了。 -
它的接口包括很多Qt特定的类。因此,
QString
的使用不容易被std::string
取代。 -
它的界面比
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
类型等。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 文件系统:复制功能的速度秘诀是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- Qt QString Remove的最后一部分是什么
- QString的目的是什么?
- 从QString获得"const wchar_t*"的最快方法是什么