本页内容

QByteArrayView Class

QByteArrayView 类提供了一个字节数组的视图,并支持QByteArray API 的只读子集。更多内容...

头文件: #include <QByteArrayView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
自: Qt 6.0

注意:该类中的所有函数均为可重入的。

QByteArrayView 比较

类别可比较类型描述
strongQByteArrayView
strongQString、QStringView 、QUtf8StringView 、QLatin1StringView 、QChar 以及 char16_t。与字符串和 Unicode 字符类型进行比较时,内容将被解释为 UTF-8。

公共类型

公共函数

QByteArrayView()
(since 6.9) QByteArrayView(const Byte (&data)[])
QByteArrayView(const Byte *data)
QByteArrayView(const Container &c)
QByteArrayView(const QByteArray &byteArray)
QByteArrayView(const char (&data)[Size])
QByteArrayView(std::nullptr_t)
QByteArrayView(const Byte *first, const Byte *last)
QByteArrayView(const Byte *data, qsizetype len)
char at(qsizetype n) const
char back() const
QByteArrayView::const_iterator begin() const
QByteArrayView::const_iterator cbegin() const
QByteArrayView::const_iterator cend() const
void chop(qsizetype length)
QByteArrayView chopped(qsizetype length) const
(since 6.2) int compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QByteArrayView::const_pointer constData() const
bool contains(QByteArrayView bv) const
bool contains(char ch) const
qsizetype count(QByteArrayView bv) const
qsizetype count(char ch) const
QByteArrayView::const_reverse_iterator crbegin() const
QByteArrayView::const_reverse_iterator crend() const
QByteArrayView::const_pointer data() const
bool empty() const
QByteArrayView::const_iterator end() const
bool endsWith(QByteArrayView bv) const
bool endsWith(char ch) const
QByteArrayView first(qsizetype n) const
char front() const
qsizetype indexOf(QByteArrayView bv, qsizetype from = 0) const
qsizetype indexOf(char ch, qsizetype from = 0) const
bool isEmpty() const
bool isNull() const
(since 6.3) bool isValidUtf8() const
QByteArrayView last(qsizetype n) const
qsizetype lastIndexOf(QByteArrayView bv, qsizetype from) const
qsizetype lastIndexOf(char ch, qsizetype from = -1) const
(since 6.2) qsizetype lastIndexOf(QByteArrayView bv) const
qsizetype length() const
(since 6.8) qsizetype max_size() const
QByteArrayView::const_reverse_iterator rbegin() const
QByteArrayView::const_reverse_iterator rend() const
qsizetype size() const
(since 6.8) QByteArrayView &slice(qsizetype pos, qsizetype n)
(since 6.8) QByteArrayView &slice(qsizetype pos)
QByteArrayView sliced(qsizetype pos) const
QByteArrayView sliced(qsizetype pos, qsizetype n) const
bool startsWith(QByteArrayView bv) const
bool startsWith(char ch) const
QByteArray toByteArray() const
(since 6.3) double toDouble(bool *ok = nullptr) const
(since 6.3) float toFloat(bool *ok = nullptr) const
(since 6.3) int toInt(bool *ok = nullptr, int base = 10) const
(since 6.3) long toLong(bool *ok = nullptr, int base = 10) const
(since 6.3) qlonglong toLongLong(bool *ok = nullptr, int base = 10) const
(since 6.3) short toShort(bool *ok = nullptr, int base = 10) const
(since 6.3) uint toUInt(bool *ok = nullptr, int base = 10) const
(since 6.3) ulong toULong(bool *ok = nullptr, int base = 10) const
(since 6.3) qulonglong toULongLong(bool *ok = nullptr, int base = 10) const
(since 6.3) ushort toUShort(bool *ok = nullptr, int base = 10) const
(since 6.3) QByteArrayView trimmed() const
void truncate(qsizetype length)
(since 6.7) operator std::string_view() const
char operator[](qsizetype n) const

静态公共成员

QByteArrayView fromArray(const Byte (&data)[Size])
(since 6.8) qsizetype maxSize()
bool operator!=(const QByteArrayView &lhs, const QByteArrayView &rhs)
bool operator<(const QByteArrayView &lhs, const QByteArrayView &rhs)
bool operator<=(const QByteArrayView &lhs, const QByteArrayView &rhs)
bool operator==(const QByteArrayView &lhs, const QByteArrayView &rhs)
bool operator>(const QByteArrayView &lhs, const QByteArrayView &rhs)
bool operator>=(const QByteArrayView &lhs, const QByteArrayView &rhs)

详细说明

QByteArrayView 引用其并不拥有的连续原始字节块。它作为各种字节数组类数据的接口类型,无需先构建QByteArray 。

字节数组数据可以表示为char 、signed char 、unsigned char 或std::byte 类型的数组(或与数组兼容的数据结构,如QByteArray 、std::basic_string等)。

QByteArrayView 被设计为一种接口类型;其主要用例是作为函数参数类型。 当 QByteArrayView 用作自动变量或数据成员时,必须注意确保所引用的数据(例如,由QByteArray 拥有的数据)在所有代码路径中都比 QByteArrayView 存活更久,以免字节数组视图最终引用已被删除的数据。

当用作接口类型时,QByteArrayView 允许单个函数接受各种各样的字节数组类数据源。 因此,一个接受 QByteArrayView 的函数既可以取代多个函数重载(例如,接受QByteArray 、const char * 等),同时还能将更多的字节数组数据源传递给该函数。

QByteArrayView 应按值传递,而不是按 const 引用传递:

    void myfun1(QByteArrayView bv);        // preferred
    void myfun2(const QByteArrayView &bv); // compiles and works, but slower

若希望在用户向函数传递的数据类型方面给予最大自由度,请在 QByteArrayView 重载函数之外,同时提供以下重载:

  • char 的重载:该重载可以委托给 QByteArrayView 版本:
        void fun(QByteArrayView bv);
        void fun(char ch) { fun(QByteArrayView(&ch, 1)); }

    尽管出于技术原因,QByteArrayView 本身无法提供 char 构造函数。

  • QByteArray:如果您存储的是字节数组的未修改副本,并且希望利用QByteArray 的隐式共享功能。

QByteArrayView 也可以用作函数的返回值。 如果调用一个返回 QByteArrayView 的函数,请特别注意,不要让 QByteArrayView 的存活时间超过该函数承诺保留所引用数据的存活时间。如有疑问,请通过调用toByteArray() 将 QByteArrayView 转换为QByteArray ,从而获得对数据的强引用。

QByteArrayView 支持的方法与QByteArray 中的方法一致。特别地,在为所查看的字符数据赋予语义(如字符大小写、空格、数字位数)的有限范围内,它使用 C 语言环境和 ASCII 编码。有关这些方法的详细信息和限制,请参阅C locale and ASCII functions 。

兼容的字节类型

QByteArrayView 可以基于任何字节容器进行构造,其中字节类型必须是以下之一:

  • char (包括有符号和无符号类型)
  • std::byte

另请参阅 QByteArray 和QStringView 。

成员类型文档

QByteArrayView::const_iterator

此 typedef 为 `QByteArrayView` 提供了一个 STL 风格的 const 迭代器。

另请参阅 iterator 和const_reverse_iterator 。

QByteArrayView::const_pointer

value_type * 的别名。为兼容 STL 而提供。

QByteArrayView::const_reference

value_type & 的别名。为兼容 STL 而提供。

QByteArrayView::const_reverse_iterator

此 typedef 为QByteArrayView 提供了一个 STL 风格的 const 反向迭代器。

另请参阅 reverse_iterator 和const_iterator 。

QByteArrayView::difference_type

std::ptrdiff_t 的别名。为兼容 STL 而提供。

QByteArrayView::iterator

此 typedef 为 `QByteArrayView` 提供了一个 STL 风格的 const 迭代器。

QByteArrayView 由于不支持可变迭代器,因此这与 `const_iterator` 完全相同。

另请参阅 ` const_iterator ` 和 `reverse_iterator`。

QByteArrayView::pointer

value_type * 的别名。为兼容 STL 而提供。

QByteArrayView 不支持可变指针,因此这与const_pointer 效果相同。

QByteArrayView::reference

value_type & 的别名。为兼容 STL 而提供。

QByteArrayView 不支持可变引用,因此这与 `const_reference` 效果相同。

QByteArrayView::reverse_iterator

此 typedef 为 `QByteArrayView` 提供了一个 STL 风格的 const 反向迭代器。

QByteArrayView 由于不支持可变反向迭代器,因此这与 `const_reverse_iterator` 相同。

另请参阅 ` const_reverse_iterator ` 和 `iterator`。

QByteArrayView::size_type

qsizetype 的别名。为与 STL 兼容而提供。

QByteArrayView::storage_type

char 的别名。

QByteArrayView::value_type

const char 的别名。为兼容 STL 而提供。

成员函数文档

[constexpr noexcept default] QByteArrayView::QByteArrayView()

构建一个空字节数组视图。

另请参阅 ` isNull()`。

[constexpr noexcept, since 6.9] template <typename Byte> requires if_compatible_byte<Byte> QByteArrayView::QByteArrayView(const Byte (&data)[])

在data 上构建一个字节数组视图,这是一个大小未知的数组。其长度由查找第一个Byte(0) 的过程决定。

data 在该字节数组视图对象的生命周期内,该约束必须始终有效。

约束

仅当Byte 是兼容的字节类型时,才参与重载解析。

该函数在 Qt 6.9 中引入。

另请参阅 Compatible Byte Types 。

[constexpr noexcept] template <typename Byte> QByteArrayView::QByteArrayView(const Byte *data)

在data 上构建一个字节数组视图。其长度由查找第一个Byte(0) 的过程决定。

data 在该字节数组视图对象的生命周期内必须保持有效。

将nullptr 作为data 传递是安全的,并将生成一个空字节数组视图。

约束

仅当data 不是数组,且Byte 是兼容的字节类型时,才参与重载解析。

另请参阅 Compatible Byte Types 。

[constexpr noexcept] template <typename Container> requires if_compatible_container<Container> QByteArrayView::QByteArrayView(const Container &c)

在数组类容器c 上构建一个字节数组视图。其长度和数据分别通过std::size(c) 和std::data(c) 进行设置。

该容器中的数据在该字节数组视图对象的生命周期内必须保持有效。

约束

仅当c 是任何包含兼容字节类型元素的连续容器时,才会参与重载解析。

另请参见 Compatible Byte Types 。

[noexcept] QByteArrayView::QByteArrayView(const QByteArray &byteArray)

在byteArray 上构建一个字节数组视图。

byteArray.data() 在该字节数组视图对象的生命周期内,xml-ph-0000@deepl.internal必须保持有效。

当且仅当byteArray.isNull() 时,该字节数组视图才为null。

[constexpr noexcept] template <size_t Size> QByteArrayView::QByteArrayView(const char (&data)[Size])

基于字符数组data 构建一个字节数组视图。该视图覆盖该数组,直至遇到第一个'\0' ,或达到Size ,以先发生者为准。若需获取整个数组,请改用fromArray()。

data 在该字节数组视图对象的生命周期内,该值必须始终有效。

注意:此 构造函数仅适用于 char 数组字面量。其设计初衷是为了兼容那些预定义了“足够大”的数组,但仅使用部分预分配空间的 C 库。 为了在隐式构造函数重载中以直观的方式支持这一点,我们需要在第一个char(0) 处停止。这对char数组来说是合乎逻辑的,但对std::byte 数组则不然。不过,这与相应的指针(Byte* )和未知长度数组(Byte[] )构造函数不一致,因此可能会在Qt的未来版本中更改。

另请参阅 fromArray 。

[constexpr noexcept] QByteArrayView::QByteArrayView(std::nullptr_t)

构建一个空字节数组视图。

另请参阅 isNull()。

[constexpr] template <typename Byte> requires if_compatible_byte<Byte> QByteArrayView::QByteArrayView(const Byte *first, const Byte *last)

在first 上构建一个字节数组视图,其长度为(last -first)。

在该 QByteArrayView 的生命周期内,[first,last) 范围必须始终有效。

如果last 也是nullptr ,则将\nullptr 作为first 传递是安全的,并将生成一个空字节数组视图。

如果last 位于first 之前,或者first 为nullptr 而last 不是,则行为未定义。

约束

仅当Byte 是兼容的字节类型时,才参与重载解析。

另请参阅 Compatible Byte Types 。

[constexpr] template <typename Byte> requires if_compatible_byte<Byte> QByteArrayView::QByteArrayView(const Byte *data, qsizetype len)

在data 上构建一个长度为len 的字节数组视图。

在该 QByteArrayView 的生命周期内,[data,len) 范围必须始终有效。

如果len 也是 0,则将nullptr 作为data 传递是安全的,并将返回一个空字节数组视图。

如果len 为负数,或者当其为正数时data 等于nullptr ,则行为未定义。

约束

仅当 `Byte ` 是兼容的字节类型时,才参与重载解析。

另请参阅 Compatible Byte Types 。

[constexpr] char QByteArrayView::at(qsizetype n) const

返回此字节数组视图中位于位置n 的字符。

如果n 为负数或不小于size() 的值,则行为未定义。

另请参阅 operator[]()、front() 和back()。

[constexpr] char QByteArrayView::back() const

返回字节数组视图中的最后一个字节。

提供此函数是为了兼容 STL。

警告: 对空字节数组视图调用 此函数将导致未定义行为。

另请参阅 ` front()`。

[constexpr noexcept] QByteArrayView::const_iterator QByteArrayView::begin() const

返回一个指向字节数组视图中第一个字节的 constSTL 风格迭代器。

提供此函数是为了兼容 STL。

另请参阅 end()、cbegin()、rbegin() 以及data()。

[constexpr noexcept] QByteArrayView::const_iterator QByteArrayView::cbegin() const

与begin()相同。

提供此函数是为了兼容 STL。

另请参阅 cend()、begin()、crbegin() 以及data()。

[constexpr noexcept] QByteArrayView::const_iterator QByteArrayView::cend() const

与end()相同。

提供此函数是为了兼容 STL。

另请参阅 cbegin()、end() 和crend()。

[constexpr] void QByteArrayView::chop(qsizetype length)

将此字节数组视图截断length 个字符。

与 `*this = first(size() - length)` 相同。

注意: 当length < 0 或length >size() 时,行为未定义。

另请参阅 sliced()、first()、last()、chopped()、truncate() 以及slice()。

[constexpr] QByteArrayView QByteArrayView::chopped(qsizetype length) const

返回该字节数组视图的副本,其中省略了最后length 字节。换句话说,返回一个长度为size() -length 的字节数组视图,该视图从该对象的开头开始。

与first(size() - length) 相同。

注意: 当length < 0 或length >size() 时,行为未定义。

另请参阅 first()、last()、sliced()、chop()、truncate() 以及slice()。

[noexcept, since 6.2] int QByteArrayView::compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

根据该QByteArrayView 在排序时位于QByteArrayView bv 之前、与之处于相同位置还是之后,返回小于、等于或大于零的整数。比较操作根据cs 中规定的大小写敏感性进行。

该函数于 Qt 6.2 中引入。

另请参阅 operator==()。

[constexpr noexcept] QByteArrayView::const_pointer QByteArrayView::constData() const

返回一个指向字节数组视图中第一个字节的 constchar 指针。

注意: 返回值所表示的 字符数组不保证以空字符结尾。返回的指针仅适用于访问索引小于该字节数组视图的size()返回值处的字节。

另请参阅 data()、begin() 和end()。

[noexcept] bool QByteArrayView::contains(QByteArrayView bv) const

[noexcept] bool QByteArrayView::contains(char ch) const

如果该字节数组视图中包含由bv 或字符ch 所表示的字节序列(分别对应),则返回true ;否则返回false 。

另请参阅 indexOf() 和lastIndexOf()。

[noexcept] qsizetype QByteArrayView::count(QByteArrayView bv) const

返回在该字节数组视图中,bv 所识别的字节序列(可能存在重叠)的出现次数。

另请参阅 contains() 和indexOf()。

[noexcept] qsizetype QByteArrayView::count(char ch) const

返回该字节数组视图中字节ch 出现的次数。

这是一个重载函数。

另请参阅 contains() 和indexOf()。

[constexpr noexcept] QByteArrayView::const_reverse_iterator QByteArrayView::crbegin() const

与rbegin()相同。

提供此函数是为了兼容 STL。

另请参见 crend()、rbegin() 和cbegin()。

[constexpr noexcept] QByteArrayView::const_reverse_iterator QByteArrayView::crend() const

与rend()相同。

提供此函数是为了与 STL 兼容。

另请参阅 crbegin()、rend() 和cend()。

[constexpr noexcept] QByteArrayView::const_pointer QByteArrayView::data() const

返回一个指向字节数组视图中第一个字节的 constchar 指针。

注意: 返回值所表示的 字符数组不保证是以空字符结尾的。返回的指针仅适用于访问索引小于该字节数组视图的 `size()` 返回值的字节。

另请参阅 begin() 和end()。

[constexpr noexcept] bool QByteArrayView::empty() const

如果该字节数组视图为空(即 `size() == 0`),则返回 `true `。

提供此函数是为了兼容 STL。

另请参阅 isEmpty()、isNull() 和size()。

[constexpr noexcept] QByteArrayView::const_iterator QByteArrayView::end() const

返回一个常量STL 风格的迭代器,该迭代器指向字节数组视图中最后一个字节的下一位置。

提供此函数是为了兼容 STL。

另请参阅 begin()、cend() 和rend()。

[noexcept] bool QByteArrayView::endsWith(QByteArrayView bv) const

[constexpr noexcept] bool QByteArrayView::endsWith(char ch) const

如果该字节数组视图以字节数组视图bv 或字符ch 结尾,则分别返回true ;否则返回false 。

另请参阅 startsWith()。

[constexpr] QByteArrayView QByteArrayView::first(qsizetype n) const

返回一个字节数组视图,该视图指向此字节数组视图的前n 字节。等同于sliced(0, n) 。

注意: 当n < 0 或n >size() 时,行为未定义。

另请参阅 last()、startsWith()、chopped()、chop()、truncate()、sliced() 以及slice()。

[static constexpr noexcept] template <typename Byte, size_t Size> QByteArrayView QByteArrayView::fromArray(const Byte (&data)[Size])

基于字节数组字面量data (长度为Size 字节)构建一个字节数组视图。该视图覆盖整个数组,包括char 数组字面量末尾的空终止符。如果不想将空终止符包含在视图中,可以在确定它位于数组末尾时,通过调用chop()将其移除。 或者,您可以使用接受 char 数组字面量作为参数的构造函数重载,该构造函数将创建一个视图,其范围截至数据中的第一个空终止符(但不包括该空终止符)。

该函数支持任何兼容字节类型的数组字面量。

另请参阅 Compatible Byte Types 和QByteArrayView 。

[constexpr] char QByteArrayView::front() const

返回字节数组视图中的第一个字节。

提供此函数是为了兼容 STL。

警告: 对空字节数组视图调用 此函数将导致未定义行为。

另请参阅 back()。

[noexcept] qsizetype QByteArrayView::indexOf(QByteArrayView bv, qsizetype from = 0) const

[noexcept] qsizetype QByteArrayView::indexOf(char ch, qsizetype from = 0) const

返回在此字节数组视图中,由bv 所查看的字节序列首次出现位置的索引,或者字节ch 首次出现位置的索引;若未找到匹配项,则从索引位置from.Returns -1开始向前搜索。

如果from 为 -1,则从最后一个字符开始搜索;如果为 -2,则从倒数第二个字符开始搜索,以此类推。

另请参阅 lastIndexOf() 和contains()。

[constexpr noexcept] bool QByteArrayView::isEmpty() const

如果该字节数组视图为空(即size() == 0 ),则返回true 。

另请参阅 empty()、isNull() 和size()。

[constexpr noexcept] bool QByteArrayView::isNull() const

如果该字节数组视图为空——即data() == nullptr ——则返回true 。

另请参阅 empty()、isEmpty() 和size()。

[noexcept, since 6.3] bool QByteArrayView::isValidUtf8() const

如果该字节数组视图包含有效的 UTF-8 编码数据,则返回 `true `;否则返回 `false `。

该函数在 Qt 6.3 中引入。

[constexpr] QByteArrayView QByteArrayView::last(qsizetype n) const

返回一个字节数组视图,该视图指向此字节数组视图中最后n 字节。

注意: 当n < 0 或n >size() 时,行为未定义。

另请参阅 first()、endsWith()、chopped()、chop()、truncate()、sliced() 以及slice()。

[noexcept] qsizetype QByteArrayView::lastIndexOf(QByteArrayView bv, qsizetype from) const

[noexcept] qsizetype QByteArrayView::lastIndexOf(char ch, qsizetype from = -1) const

返回在此字节数组视图中,从索引位置from 向后搜索时,bv 所查看的字节序列的最后一次出现点的起始位置,或者字节ch 的最后一次出现点的索引位置。

如果from 为 -1,则从最后一个字符开始搜索;如果为 -2,则从倒数第二个字符开始搜索,以此类推。

如果未找到匹配项,则返回 -1。

注意:当 搜索长度为 0 的bv时 ,即使通常认为-1 是从视图末尾开始搜索的,但通过负值的from ,数据末尾的匹配项仍会被排除在搜索之外:末尾的匹配项位于最后一个字符之后,因此会被排除。 若要包含这样的最终空匹配,可为from 指定正值,或完全省略from 参数。

另请参阅 indexOf() 和contains()。

[noexcept, since 6.2] qsizetype QByteArrayView::lastIndexOf(QByteArrayView bv) const

返回在该字节数组视图中,bv 所查看的字节序列中最后一次出现位置的索引,从该字节数组视图的末尾向后搜索。如果未找到匹配项,则返回 -1。

这是一个重载函数。

该函数在 Qt 6.2 中引入。

另请参阅 indexOf() 和contains()。

[constexpr noexcept] qsizetype QByteArrayView::length() const

与size() 相同。

另请参阅 empty()、isEmpty()、isNull() 以及size()。

[static constexpr noexcept, since 6.8] qsizetype QByteArrayView::maxSize()

它返回视图理论上能够表示的元素最大数量。实际上,该数量可能会小得多,具体取决于系统可用的内存大小。

该函数于 Qt 6.8 版本中引入。

[constexpr noexcept, since 6.8] qsizetype QByteArrayView::max_size() const

提供此函数是为了兼容 STL。

返回maxSize()。

该函数于 Qt 6.8 版本中引入。

[constexpr noexcept] QByteArrayView::const_reverse_iterator QByteArrayView::rbegin() const

返回一个指向字节数组视图中第一个字节的、按反向顺序排列的、STL 风格的const 反向迭代器。

提供此函数是为了兼容 STL。

另请参阅 rend()、crbegin() 和begin()。

[constexpr noexcept] QByteArrayView::const_reverse_iterator QByteArrayView::rend() const

返回一个STL 风格的反向迭代器,该迭代器指向字节数组视图中最后一个字节之后的一个位置,且顺序为逆序。

提供此函数是为了兼容 STL。

另请参阅 rbegin()、crend() 以及end()。

[constexpr noexcept] qsizetype QByteArrayView::size() const

返回此字节数组视图中的字节数。

另请参阅 empty()、isEmpty() 和isNull()。

[constexpr, since 6.8] QByteArrayView &QByteArrayView::slice(qsizetype pos, qsizetype n)

将此字节数组视图修改为从位置pos 开始,并向后延伸n 个字节。

注意: 当pos < 0、n < 0 或pos +n >size() 时,行为 未定义。

该函数于 Qt 6.8 中引入。

另请参阅 sliced()、first()、last()、chopped()、chop() 以及truncate()。

[constexpr, since 6.8] QByteArrayView &QByteArrayView::slice(qsizetype pos)

修改此字节数组视图,使其从位置pos 开始,并延伸至其末尾。

注意: 当pos < 0 或pos >size() 时,行为未定义。

这是一个重载函数。

该函数在 Qt 6.8 中引入。

另请参见 sliced()、first()、last()、chopped()、chop() 和truncate()。

[constexpr] QByteArrayView QByteArrayView::sliced(qsizetype pos) const

返回一个字节数组视图,该视图从该对象的pos 位置开始,一直延伸到其末尾。

注意: 当pos < 0 或pos >size() 时,行为未定义。

另请参阅 first()、last()、chopped()、chop()、truncate() 以及slice()。

[constexpr] QByteArrayView QByteArrayView::sliced(qsizetype pos, qsizetype n) const

返回一个字节数组视图,该视图指向该字节数组视图中从位置pos 开始的n 字节。

注意: 当pos < 0、n < 0 或pos +n >size() 时,行为 未定义。

另请参见 first()、last()、chopped()、chop()、truncate() 以及slice()。

[noexcept] bool QByteArrayView::startsWith(QByteArrayView bv) const

[constexpr noexcept] bool QByteArrayView::startsWith(char ch) const

如果该字节数组视图以字节数组视图bv 或字符ch 开头,则分别返回true ;否则返回false 。

另请参阅 endsWith()。

QByteArray QByteArrayView::toByteArray() const

返回此字节数组视图数据的深度拷贝,类型为QByteArray 。

当且仅当该字节数组视图为 null 时,返回值才会是一个 null 的 `QByteArray `。

[since 6.3] double QByteArrayView::toDouble(bool *ok = nullptr) const

返回将此字节数组视图转换为double 值的对象。

如果转换发生溢出,则返回无穷大;如果因其他原因(例如下溢)导致转换失败,则返回 0.0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

警告: QByteArrayView 的内容 只能包含有效的数字字符,包括正负号、科学记数法中使用的字母 e 以及小数点。包含单位或额外字符会导致转换错误。

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 在数字和字符串之间进行支持区域设置的转换。

该函数会忽略首尾的空格字符。

该函数于 Qt 6.3 中引入。

[since 6.3] float QByteArrayView::toFloat(bool *ok = nullptr) const

返回将此字节数组视图转换为float 值的结果。

如果转换发生溢出,则返回无穷大;如果因其他原因(例如下溢)导致转换失败,则返回 0.0。

如果 `ok ` 不是 `nullptr`,则通过将 * `ok ` 设置为 `false` 来报告失败,通过将 * `ok ` 设置为 `true` 来报告成功。

QByteArrayView string("1234.56 Volt");
bool ok;
float a = string.toFloat(&ok);       // a == 0, ok == false
a = string.first(7).toFloat(&ok); // a == 1234.56, ok == true

警告: QByteArrayView 的内容 只能包含有效的数字字符,包括正负号、科学记数法中使用的字母 e 以及小数点。包含单位或额外字符会导致转换错误。

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 在数字和字符串之间进行考虑区域设置的转换。

该函数会忽略首尾的空白字符。

该函数自 Qt 6.3 起引入。

[since 6.3] int QByteArrayView::toInt(bool *ok = nullptr, int base = 10) const

返回该字节数组视图,将其转换为基数为base 的int ,默认基数为 。支持基数为0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果 `base ` 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(基数 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

QByteArrayView str("FF");
bool ok;
int hex = str.toInt(&ok, 16);     // hex == 255, ok == true
int dec = str.toInt(&ok, 10);     // dec == 0, ok == false

注意: 数字的转换是在默认的 C 区域设置下进行的,与用户的区域设置无关。若要在数字和字符串之间进行考虑区域设置的转换,请使用QLocale 。

该函数自 Qt 6.3 起引入。

[since 6.3] long QByteArrayView::toLong(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为long 整数的值,转换时采用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示:A代表10,B代表11,依此类推。

如果 `base ` 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(基数 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

QByteArrayView str("FF");
bool ok;
long hex = str.toLong(&ok, 16);   // hex == 255, ok == true
long dec = str.toLong(&ok, 10);   // dec == 0, ok == false

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 来执行数字与字符串之间的区域设置感知转换。

该函数于 Qt 6.3 中引入。

[since 6.3] qlonglong QByteArrayView::toLongLong(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为long long 的对象,转换时采用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果 `base ` 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(基数 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 来执行数字与字符串之间的区域设置感知转换。

该函数于 Qt 6.3 中引入。

[since 6.3] short QByteArrayView::toShort(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为short 的对象,转换时采用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果 `base ` 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(基数 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不为 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 来执行数字与字符串之间支持区域设置的转换。

该函数在 Qt 6.3 中引入。

[since 6.3] uint QByteArrayView::toUInt(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为unsigned int 的对象,转换时采用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果base 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(进制 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

注意: 数字的转换是在默认的 C 区域设置下进行的,与用户的区域设置无关。若要在数字和字符串之间进行支持区域设置的转换,请使用QLocale 。

该函数于 Qt 6.3 中引入。

[since 6.3] ulong QByteArrayView::toULong(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为unsigned long int 的对象,转换时采用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果 `base ` 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(进制 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 来执行数字与字符串之间的区域设置感知转换。

该函数于 Qt 6.3 中引入。

[since 6.3] qulonglong QByteArrayView::toULongLong(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为unsigned long long 的对象,转换时采用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果 `base ` 为 0,则根据以下规则自动确定进制:如果字节数组视图以“0x”开头,则将其余部分视为十六进制(进制 16); 否则,如果以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

注意: 数字的转换 是在默认的 C 区域设置下进行的,与用户的区域设置无关。请使用QLocale 来执行数字与字符串之间的区域设置感知转换。

该函数于 Qt 6.3 中引入。

[since 6.3] ushort QByteArrayView::toUShort(bool *ok = nullptr, int base = 10) const

返回将此字节数组视图转换为unsigned short 的对象,转换时使用基数base (默认值为10)。支持基数0以及2至36,其中大于9的数字使用字母表示;A代表10,B代表11,依此类推。

如果base 为 0,则根据以下规则自动确定进制:如果字节数组视图以 "0x" 开头,则将其余部分视为十六进制(进制 16); 否则,若以“0”开头,则将其余部分视为八进制(基数 8);否则视为十进制。

如果转换失败,则返回 0。

如果 `ok ` 不是 `nullptr`,则通过将 `*ok ` 设置为 `false` 来报告失败,通过将 `*ok ` 设置为 `true` 来报告成功。

注意: 数字的转换 是在默认的 C 语言环境下进行的,与用户的语言环境无关。若要在数字与字符串之间进行考虑语言环境的转换,请使用QLocale 。

该函数自 Qt 6.3 起引入。

[noexcept, since 6.3] QByteArrayView QByteArrayView::trimmed() const

返回该字节数组视图的副本,并从其开头和结尾移除空格字符。

这些空格字符是指在 C 语言环境中,标准 C++ 函数 `isspace() ` 返回 `true ` 的字符;它们包括 ASCII 字符:制表符 '\t'、换行符 '\n'、回车符 '\r'、垂直制表符 '\v'、换页符 '\f' 以及空格符 ' '。

该函数于 Qt 6.3 中引入。

另请参阅 QChar::SpecialCharacter 和Spacing Characters 。

[constexpr] void QByteArrayView::truncate(qsizetype length)

将此字节数组视图截断为长度为length 。

与*this = first(length) 相同。

注意: 当length < 0 或length >size() 时,行为未定义。

另请参阅 first()、last()、sliced()、chopped() 以及chop()。

[constexpr noexcept, since 6.7] QByteArrayView::operator std::string_view() const

将此QByteArrayView 对象转换为std::string_view 对象。返回的视图将具有与该视图相同的数据指针和长度。

该函数在 Qt 6.7 中引入。

[constexpr] char QByteArrayView::operator[](qsizetype n) const

返回该字节数组视图中位置为n 处的字符。

如果n 为负数或不小于size(),则行为未定义。

另请参阅 at()、front() 和back()。

相关的非成员

[noexcept] bool operator!=(const QByteArrayView &lhs, const QByteArrayView &rhs)

[noexcept] bool operator<(const QByteArrayView &lhs, const QByteArrayView &rhs)

[noexcept] bool operator<=(const QByteArrayView &lhs, const QByteArrayView &rhs)

[noexcept] bool operator==(const QByteArrayView &lhs, const QByteArrayView &rhs)

[noexcept] bool operator>(const QByteArrayView &lhs, const QByteArrayView &rhs)

[noexcept] bool operator>=(const QByteArrayView &lhs, const QByteArrayView &rhs)

QByteArrayView 的比较运算符。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.