QCollator 类
QCollator 类根据本地化排序算法比较字符串。 更多...
头文件 | #include <QCollator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 所有成员列表,包括继承的成员
- QCollator 是 字符串数据类 和 隐式共享类 的一部分。
注意: 此类中所有函数都是 可重入的。
公共函数
QCollator() | |
QCollator(const QLocale &locale) | |
QCollator(const QCollator &other) | |
QCollator(QCollator &&other) | |
~QCollator() | |
Qt::CaseSensitivity | caseSensitivity() const |
int | compare(QStringView s1, QStringView ) const |
int | compare(const QString &, const QString &s2) const |
int | compare(const QChar *s1, qsizetype len1, const QChar *s2, qsizetype len2) const |
bool | ignorePunctuation() const |
QLocale | locale() const |
bool | numericMode() const |
void | setCaseSensitivity(Qt::CaseSensitivity cs) |
void | setIgnorePunctuation(bool on) |
void | setLocale(const QLocale &locale) |
void | setNumericMode(bool on) |
QCollatorSortKey | sortKey(const QString &string) const |
void | swap(QCollator &other) |
bool | operator()(QStringView s1, QStringView s2) const |
bool | operator()(const QString &s1, const QString &s2) const |
QCollator & | operator=(const QCollator &other) |
QCollator & | operator=(QCollator &&other) |
静态公共成员
(since 6.3) int | defaultCompare(QStringView s1, QStringView s2) |
(since 6.3) QCollatorSortKey | defaultSortKey(QStringView key) |
详细描述
QCollator 使用 QLocale 初始化。然后可以使用它根据该区域设置的排序顺序比较和排序字符串。
QCollator 对象可以与基于模板的排序算法(如 std::sort())一起使用,以对包含 QString 条目的列表进行排序。
QStringList sortedStrings(QStringList seq) { QCollator order; std::sort(seq.begin(), seq.end(), order); return seq; }
除了区域设置外,还可以设置一些可选标志,这些标志会影响排序的结果。
POSIX回退实现
在Unix系统上,Qt通常编译为使用ICU(除了macOS,Qt默认使用等效的Apple API)。然而,如果ICU在编译时不可用或显式禁用,Qt将使用一个仅使用POSIX API的后备内存。这个后端有几个限制
- 只支持QLocale::c()和QLocale::system()区域设置。有关系统区域的更多信息,请参考POSIX和C标准库手册中关于
<locale.h>
头的信息。 - caseSensitivity()不支持:只能执行大小写敏感的排序。
- numericMode()和ignorePunctuation()不支持。
使用任何不受支持的选择都会导致在应用程序的输出中打印警告。
成员函数文档
QCollator::QCollator()
使用默认区域设置的排序区域构建一个QCollator。
作为默认区域设置使用的系统区域,其排序区域可能与其本身不同(例如,在Unix上,如果LC_COLLATE与LANG环境中的设置不同)。所有其他区域是它们自己的排序区域。
另请参阅setLocale()、QLocale::collation()和QLocale::setDefault()。
[明确指定]
QCollator::QCollator(const QLocale &locale)
使用给定的locale构建一个QCollator。
另请参阅setLocale()。
QCollator::QCollator(const QCollator &other)
创建other的副本。
[noexcept]
QCollator::QCollator(QCollator &&other)
移动构造函数。将从小other移动到这个排序器。
注意,移动后的QCollator只能销毁或赋值于。调用除析构函数或赋值运算符之外的函数的效果是未定义的。
[noexcept]
QCollator::~QCollator()
销毁此排序器。
Qt::CaseSensitivity QCollator::caseSensitivity() const
返回排序器的字母大小写敏感度。
默认为大小写敏感,直到设置。
注意:在C区域中,当大小写敏感时,所有小写字母都在所有大写字母之后排序,而在大多数区域中,每个小写字母要么立即在前,要么立即在后。因此,“Zap”在C区域中排序在“ape”之后,而在大多数其他情况下之后。
另请参阅setCaseSensitivity()。
int QCollator::compare(QStringView s1, QStringView s2) const
比较s1和s2。
如果 s1 小于 s2,则返回负整数;如果大于 s2,则返回正整数;如果相等,则返回零。
int QCollator::compare(const QString &s1, const QString &s2) const
这是一个重载的函数。
int QCollator::compare(const QChar *s1, qsizetype len1, const QChar *s2, qsizetype len2) const
这是一个重载的函数。
比较 s1 与 s2。 len1 和 len2 分别指定由 s1 和 s2 指向的 QChar 数组的长度。
如果 s1 小于 s2,则返回负整数;如果大于 s2,则返回正整数;如果相等,则返回零。
注意:在 6.4 之前的 Qt 版本中,长度参数的类型为 int
,而不是 qsizetype
。
[静态,自 6.3 起]
int QCollator::defaultCompare(QStringView s1, QStringView s2)
比较字符串 s1 和 s2,返回它们的排序顺序。此函数在默认构造的 QCollator 对象上执行与 compare() 相同的操作。
此功能自 Qt 6.3 起引入。
另请参阅 compare() 和 defaultSortKey()。
[静态,自 6.3 起]
QCollatorSortKey QCollator::defaultSortKey(QStringView key)
返回字符串 key 的排序键。此函数在默认构造的 QCollator 对象上执行与 sortKey() 相同的操作。
此功能自 Qt 6.3 起引入。
另请参阅 sortKey() 和 defaultCompare()。
bool QCollator::ignorePunctuation() const
返回在进行排序操作时是否忽略标点和符号。
当 true
时,字符串比较时丢弃了每个字符串中的所有标点和符号。
另请参阅 setIgnorePunctuation()。
QLocale QCollator::locale() const
返回排序器的区域。
除非在构造函数中提供或通过调用 setLocale(),否则使用系统的默认排序区域。
另请参阅 setLocale() 和 QLocale::collation()。
bool QCollator::numericMode() const
如果启用了数字排序,则返回 true
,否则返回 false
。
当 true
时,数字被视为数字并以算术顺序排序;例如,100 在 99 之后。当 false
时,数字按字典顺序排序,所以 100 在 99 之前(因为 1 在 9 之前)。默认情况下,此选项处于禁用状态。
void QCollator::setCaseSensitivity(Qt::CaseSensitivity cs)
设置合并器的区分大小写敏感性为 cs。
void QCollator::setIgnorePunctuation(bool on)
如果 on 是 true
,则忽略标点符号和符号;如果是 false
,则关注它们。
void QCollator::setLocale(const QLocale &locale)
设置合并器的区域为 locale。
参见locale。
void QCollator::setNumericMode(bool on)
当 on 是 true
时,启用数字排序模式。
参见numericMode。
QCollatorSortKey QCollator::sortKey(const QString &string) const
返回 string 的排序键。
创建排序键通常比直接使用 compare() 方法稍慢。但如果字符串会被反复比较(例如在排序字符串列表时),通常为每个字符串创建排序键然后使用键排序会更快。
注意:在 Darwin 上的 C(也称为 POSIX)区域设置中不支持。
[noexcept]
void QCollator::swap(QCollator &other)
与 other 交换此合并器。此函数非常快且绝不会失败。
bool QCollator::operator()(QStringView S1, QStringView S2) const
可以将 QCollator 用作排序算法的比较函数。如果 s1 比 s2 排序在前,则返回 true
,否则返回 false
。
参见compare。
bool QCollator::operator()(const QString &S1, const QString &S2) const
这是一个重载的函数。
QCollator &QCollator::operator=(const QCollator &other)
将 other 分配给此合并器。
[noexcept]
QCollator &QCollator::operator=(QCollator &&other)
从other移动赋值到此排序器。
注意,已经移动的QCollator只能被销毁或赋值。调用除析构函数或任何赋值运算符之外的其他函数的效果是未定义的。
© 2024Qt公司 Ltd。本文档贡献的内容是各自所有者的版权。提供的文档受GNU自由文档许可版本1.3条款的许可,该许可由自由软件基金会发布。Qt和相应的标志是芬兰及/或其他国家的Qt公司注册商标。所有其他商标均为其各自所有者财产。