QByteArrayView Class

QByteArrayView 类通过QByteArray API 的只读子集提供字节数组视图。更多

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

该类具有很强的可比性

该类与QByteArray 和 const char * 具有很强的可比性

该类与QString,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 (&)[Size] data)
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) std::string_view operator std::string_view() const
char operator[](qsizetype n) const

静态公共成员

QByteArrayView fromArray(const Byte (&)[Size] data)
(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 charstd::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 locale 和 ASCII 编码。有关这些方法的详情和限制,请参阅C locale and ASCII functions

兼容的字节类型

QByteArrayView 可在任何字节容器上构建,其中的字节类型包括

  • char (有符号和无符号)
  • std::byte

另请参阅 QByteArrayQStringView

成员类型文档

QByteArrayView::const_iterator

该类型定义为QByteArrayView 提供了 STL 风格的常量迭代器。

另请参见 iteratorconst_reverse_iterator

QByteArrayView::const_pointer

value_type * 的别名。与 STL 兼容。

QByteArrayView::const_reference

value_type & 的别名。与 STL 兼容。

QByteArrayView::const_reverse_iterator

该类型定义为QByteArrayView 提供了 STL 风格的 const 反向迭代器。

另请参见 reverse_iteratorconst_iterator

QByteArrayView::difference_type

std::ptrdiff_t 的别名。与 STL 兼容。

QByteArrayView::iterator

该类型定义为QByteArrayView 提供了 STL 风格的常量迭代器。

QByteArrayView 迭代器不支持可变迭代器,因此它与 相同。const_iterator

另请参见 const_iteratorreverse_iterator

QByteArrayView::pointer

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

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

QByteArrayView::reference

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

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

QByteArrayView::reverse_iterator

该类型定义为QByteArrayView 提供了 STL 风格的 const 反向迭代器。

QByteArrayView 迭代器不支持可变反向迭代器,因此它与 相同。const_reverse_iterator

另请参见 const_reverse_iteratoriterator

QByteArrayView::size_type

qsizetype 的别名。与 STL 兼容。

QByteArrayView::storage_type

char 的别名 。

QByteArrayView::value_type

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

成员函数文档

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

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

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

另请参阅 endsWith() 。

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

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

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

另请参阅 startsWith() 。

[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()。

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

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

如果该字节数组视图包含由bv 或字符ch 分别查看的字节序列,则返回true ;否则返回false

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

[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 时,数据末尾的匹配将被负from 从搜索中排除,尽管-1 通常被认为是从视图的末尾开始搜索:末尾的匹配在最后一个字符之后,因此被排除在外。要包含这种最后的空匹配,要么为from 赋正值,要么完全省略from 参数。

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

[constexpr noexcept] QByteArrayView::QByteArrayView()

构造空字节数组视图。

另请参阅 isNull()。

[constexpr noexcept, since 6.9] template <typename Byte, QByteArrayView::if_compatible_byte<Byte> = true> 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, QByteArrayView::if_compatible_container<Container> = true> 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() 必须在该字节数组视图对象的生命周期内保持有效。

当且仅当byteArray.isNull() 时,字节数组视图将为空。

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

在字符数组data 上构建字节数组视图。该视图覆盖整个数组,直到遇到第一个'\0'Size ,以先到者为准。如果需要完整的数组,请使用fromArray() 代替。

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

注意: 该构造函数仅适用于字符数组字面量。这样做的原因是为了与 C 库兼容,因为 C 库预先定义了 "足够大 "的数组,但只使用了部分预先分配的空间。为了在隐式构造函数重载中以直观的方式支持这一点,我们需要在第一个char(0) 时停止。这对于字符数组是合理的,但对于std::byte 数组则不然。不过,这与相应的指针 (Byte*) 和未知长度数组 (Byte[]) 构造函数不一致,因此可能会在未来的 Qt XML 版本中改变。

另请参见 fromArray

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

构造空字节数组视图。

另请参阅 isNull()。

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

first 上构建长度为 (last -first) 的字节数组视图。

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

如果last 也是nullptr ,则以first 的形式传递\nullptr 是安全的,但会导致字节数组视图为空。

如果lastfirst 之前,或firstnullptrlast 不是,则行为未定义。

限制条件

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

另请参见 Compatible Byte Types

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

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

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

如果len 也为 0,则以data 的形式传递nullptr 是安全的,但会导致字节数组视图为空。

如果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

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

提供此函数是为了与 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] 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

返回指向字节数组视图中最后一个字节之后的 ConstSTL 样式迭代器

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

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

[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 (&)[Size] data)

在数组字面data 上构造字节数组视图。该视图覆盖整个数组。这包括char 数组字面的尾部 null 终结符。如果不希望在视图中包含 null 终结符,可以在确定它位于末尾时,chop() 删除它。或者,也可以使用构造函数重载字符数组字面量,这样就可以创建一个视图,直至但不包括数据中的第一个空结束符。

该函数适用于任何兼容字节类型的数组字面量。

另请参见 Compatible Byte TypesQByteArrayView

[constexpr] char QByteArrayView::front() const

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

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

警告 在空字节数组视图上调用此函数会导致未定义的行为。

另请参见 back()。

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

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

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

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

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

另请参阅 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, 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

返回一个 ConstSTL 样式的反向迭代器,按相反顺序指向字节数组视图中的第一个字节。

提供此函数是为了与 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

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

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

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

QByteArray QByteArrayView::toByteArray() const

QByteArray 的形式返回该字节数组视图数据的深度副本。

如果且仅当该字节数组视图为空,返回值将是一个空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 = str.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 ,默认为 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;
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

使用base 将此字节数组视图转换为long int,默认为 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

使用base 将此字节数组视图转换为long long ,默认为十。支持从 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

使用base 将此字节数组视图转换为short ,默认为十。支持从 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

使用base 将此字节数组视图转换为unsigned int ,默认为 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

使用base 将此字节数组视图转换为unsigned long int ,默认为 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

使用base 将此字节数组视图转换为unsigned long long ,默认为 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

使用base 将此字节数组视图转换为unsigned short ,默认为 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++isspace() 函数在 C locale 中返回true 的字符;它们是 ASCII 字符制表符"\t"、换行符"\n"、回车符"\r"、垂直制表符"\v"、换页符"\f "和空格"'"。

该函数在 Qt 6.3 中引入。

另请参见 QChar::SpecialCharacterSpacing 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] std::string_view 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 的比较运算符。

© 2025 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.