QUtf8StringView Class

QUtf8StringView クラスは、QString API の読み取り専用サブセットを使用して、UTF-8 文字列の統一ビューを提供します。詳細...

ヘッダー #include <QUtf8StringView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
以来:Qt 6.0

このクラスは強く比較可能です。

このクラスは char16_t,QChar, const char16_t *,QString,QStringView,QLatin1StringView強く比較可能です。

このクラスは、const char *,QByteArray およびQByteArrayView強く比較可能です。

バイト配列の内容はutf-8として解釈されます。

注意:このクラスの関数はすべてリエントラントです。

パブリック型

パブリック関数

QUtf8StringView()
QUtf8StringView(const Char (&)[N] string)
QUtf8StringView(const Char *str)
QUtf8StringView(const Container &str)
QUtf8StringView(std::nullptr_t)
QUtf8StringView(const Char *first, const Char *last)
QUtf8StringView(const Char *str, qsizetype len)
QUtf8StringView::storage_type at(qsizetype n) const
QUtf8StringView::storage_type back() const
QUtf8StringView::const_iterator begin() const
QUtf8StringView::const_iterator cbegin() const
QUtf8StringView::const_iterator cend() const
void chop(qsizetype n)
QUtf8StringView chopped(qsizetype n) const
(since 6.5) int compare(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
(since 6.5) int compare(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
(since 6.5) int compare(QUtf8StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QUtf8StringView::const_reverse_iterator crbegin() const
QUtf8StringView::const_reverse_iterator crend() const
QUtf8StringView::const_pointer data() const
bool empty() const
QUtf8StringView::const_iterator end() const
QUtf8StringView first(qsizetype n) const
QUtf8StringView::storage_type front() const
bool isEmpty() const
bool isNull() const
(since 6.3) bool isValidUtf8() const
QUtf8StringView last(qsizetype n) const
qsizetype length() const
(since 6.8) qsizetype max_size() const
QUtf8StringView::const_reverse_iterator rbegin() const
QUtf8StringView::const_reverse_iterator rend() const
qsizetype size() const
(since 6.8) QUtf8StringView &slice(qsizetype pos, qsizetype n)
(since 6.8) QUtf8StringView &slice(qsizetype pos)
QUtf8StringView sliced(qsizetype pos) const
QUtf8StringView sliced(qsizetype pos, qsizetype n) const
QString toString() const
void truncate(qsizetype n)
const char8_t *utf8() const
(since 6.7) std::basic_string_view<QUtf8StringView::storage_type> operator std::basic_string_view<QUtf8StringView::storage_type>() const
QUtf8StringView::storage_type operator[](qsizetype n) const

静的パブリック・メンバー

QUtf8StringView fromArray(const Char (&)[Size] string)
(since 6.8) qsizetype maxSize()

詳細説明

QUtf8StringViewは、自身が所有していないUTF-8文字列の連続部分を参照します。最初にQStringQByteArray を構築する必要がなく、あらゆる種類の UTF-8 文字列へのインターフェース型として機能します。

UTF-8文字列は、char8_tcharsigned charunsigned char の配列(またはstd::basic_stringなどの配列互換のデータ構造)として表現することができます。

QUtf8StringViewはインターフェース型として設計されており、その主な使用例は関数のパラメータ型である。QUtf8StringViewが自動変数またはデータメンバーとして使用される場合、文字列ビューが削除されたデータを参照することにならないように、参照される文字列データ(例えば、std::u8stringによって所有される)が、すべてのコードパス上でQUtf8StringViewよりも長くなるように注意する必要があります。

インターフェイス型として使用する場合、QUtf8StringViewは、単一の関数でさまざまなUTF-8文字列データソースを受け入れることができます。したがって、QUtf8StringView を受け入れる 1 つの関数は、(QByteArray などの)複数の関数のオーバーロードに取って代わると同時に、u8"Hello World" や、char8_t (C++20)、char (C++17)の文字列リテラルなど、さらに多くの文字列データ ソースを関数に渡すことができます。C++17 と C++20 の間のchar8_t の非互換性は、QUtf8StringView を使用することで解消されます。

すべてのビューと同様に、QUtf8StringView は、const への参照ではなく値で渡す必要があります:

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

ユーザーが関数に渡す文字列の自由度を最大限に高めたい場合は、代わりにQAnyStringView

QUtf8StringViewは、関数の戻り値としても使用できます。QUtf8StringViewを返す関数を呼び出す場合、参照される文字列データを保持するために関数が約束する時間よりも長くQUtf8StringViewを保持しないように、特に注意してください。疑わしい場合は、toString ()を呼び出してQUtf8StringViewをQString に変換することで、データへの強力な参照を取得します。

QUtf8StringViewはリテラル型です。

互換性のある文字型

QUtf8StringViewは、さまざまな文字型の文字列を受け入れる:

  • char (符号付きおよび符号なしの両方)
  • char8_t (C++20のみ)

サイズとサブ文字列

QUtf8StringView関数のサイズと位置はすべてUTF-8コードポイントです(つまり、UTF-8のマルチバイト配列は、その長さに応じて2、3、または4とカウントされます)。QUtf8StringViewは、UTF-8マルチバイト配列のスライスを検出したり防止したりする試みはありません。これは、QStringView とサロゲートペアの状況に似ています。

C++20、char8_t、および QUtf8StringView

C++20 では、u8"" 文字列リテラルの型がconst char[] からconst char8_t[] に変更されました。もし Qt 6 が C++20 に依存していれば、QUtf8StringView はchar8_t をネイティブに格納し、以下の関数とエイリアスはchar8_t を(ポインタとして)使用します:

これはQt 7でQUtf8StringViewが期待されるものですが、Qt 6ではこれは不可能でした。今後10年間、ユーザーをC++17時代のインターフェイスに閉じ込める代わりに、Qtは2つのQUtf8StringViewクラスを異なる(インラインの)名前空間で提供します。1つ目は名前空間q_no_char8_tconst charvalue_type を持ち、汎用的に利用できます。もう 1 つは名前空間q_has_char8_t にあり、const char8_tvalue_type を持ち、C++20 モードでコンパイルする場合にのみ使用できます。

q_no_char8_t は、偶発的なバイナリの非互換性を避けるため、C++ のエディションに関係なくインライン名前空間です。 バージョンを使用するには、 で明示的に名前を指定する必要があります。char8_t q_has_char8_t::QUtf8StringView

内部的には、どちらも同じテンプレート・クラスであるQBasicUtf8StringViewのインスタンス化です。テンプレート・クラスの名前をソース・コードで使用しないでください。

QAnyStringViewQUtf8StringViewQStringも参照して ください。

メンバ型ドキュメント

QUtf8StringView::const_iterator

この型定義は,QUtf8StringView に対する STL スタイルの const イテレータを提供する.

iterator およびconst_reverse_iteratorも参照

QUtf8StringView::const_pointer

value_type * のエイリアス。STL との互換性のために提供される。

QUtf8StringView::const_reference

value_type & のエイリアス。STL との互換性のために提供される。

QUtf8StringView::const_reverse_iterator

この型定義は,QUtf8StringView に対する STL スタイルの const 逆イテレータを提供する.

reverse_iterator およびconst_iteratorも参照

QUtf8StringView::difference_type

std::ptrdiff_t のエイリアス。STL との互換性のために提供される。

QUtf8StringView::iterator

この型定義は,QUtf8StringView に対する STL スタイルの const イテレータを提供する.

QUtf8StringView は変更可能なイテレータをサポートしないので,これは と同じである.const_iterator

const_iterator およびreverse_iteratorも参照

QUtf8StringView::pointer

value_type * のエイリアス。STL との互換性のために提供されています。

QUtf8StringView はミュータブルポインタをサポートしていないので、これは と同じです。const_pointer

QUtf8StringView::reference

value_type & のエイリアス。STL との互換性のために提供されています。

QUtf8StringView はミュータブル参照をサポートしていないので、これは と同じです。const_reference

QUtf8StringView::reverse_iterator

この型定義は,QUtf8StringView に対する STL スタイルの const 逆イテレータを提供する.

QUtf8StringView は変更可能な逆イテレータをサポートしていないので,これは と同じである.const_reverse_iterator

const_reverse_iterator およびiteratorも参照

QUtf8StringView::size_type

qsizetype のエイリアス。STL との互換性のために提供される。

[alias] QUtf8StringView::storage_type

char のエイリアス。

QUtf8StringView::value_type

const char のエイリアス。STL との互換性のために提供されています。

メンバ関数ドキュメント

[noexcept, since 6.5] int QUtf8StringView::compare(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

[noexcept, since 6.5] int QUtf8StringView::compare(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

[noexcept, since 6.5] int QUtf8StringView::compare(QUtf8StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

この文字列ビューとstr を比較し、この文字列ビューがstr より小さい場合は 負の整数、str より大きい場合は正の整数、等しい場合は 0 を返す。

csQt::CaseSensitive の場合(デフォルト)、比較は大文字小文字を区別します。

この関数は Qt 6.5 で導入されました。

[constexpr noexcept] QUtf8StringView::QUtf8StringView()

NULL 文字列ビューを構築します。

isNull()も参照ください

[constexpr noexcept] template <typename Char, size_t N> QUtf8StringView::QUtf8StringView(const Char (&)[N] string)

文字列リテラルstring に対して文字列ビューを構築する。ビューは、最初のChar(0) が現れるか、N が現れるか、どちらか早い方まで配列をカバーします。完全な配列が必要な場合は、代わりにfromArray() を使用してください。

string は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。

このコンストラクタは、string が実際の配列であり、Char が互換性のある文字型である場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t charsigned charunsigned char

fromArray()も参照

[constexpr noexcept] template <typename Char> QUtf8StringView::QUtf8StringView(const Char *str)

str の文字列ビューを構築する。長さは、最初のChar(0) をスキャンして決定されます。

str は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。

str としてnullptr を渡すと安全で、NULL 文字列ビューになります。

このコンストラクタは、str が配列でなく、Char が互換性のある文字型である場合にのみ、オーバーロードの解決に参加します。互換性のある文字型は以下のとおりです:char8_t charsigned charunsigned char

[constexpr noexcept] template <typename Container, QUtf8StringView::if_compatible_container<Container> = true> QUtf8StringView::QUtf8StringView(const Container &str)

str の文字列ビューを構築する。長さはstd::size(str)

std::data(str) は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。

このコンストラクタは、Containervalue_type と互換性のある文字型を持つコンテナである場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t charsigned charunsigned char です。

文字列ビューが空になるのは、std::size(str) == 0 の場合のみである。このコンストラクタがNULLの文字列ビューを生成できるかどうかは未定です(std::data(str) の場合、nullptr を返す必要があります)。

isNull() およびisEmpty()も参照

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

NULL 文字列ビューを構築します。

isNull()も参照ください

[constexpr] template <typename Char, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView::QUtf8StringView(const Char *first, const Char *last)

first に、長さ (last -first) の文字列ビューを構築する。

[first,last) の範囲は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。

first として\nullptr を渡しても、lastnullptr の場合は安全であり、NULL 文字列ビューになります。

lastfirst より前にある場合、またはfirstnullptrlast がそうでない場合の動作は未定義です。

このコンストラクタは、Char が互換性のある文字型の場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t charsigned charunsigned char

[constexpr] template <typename Char, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView::QUtf8StringView(const Char *str, qsizetype len)

長さlen を持つstr の文字列ビューを構築します。

[str,len) の範囲は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。

str としてnullptr を渡しても、len が 0 の場合は安全であり、NULL 文字列ビューになります。

len が負の場合、または正の場合、strnullptr の場合の動作は未定義です。

このコンストラクタは、Char が互換性のある文字型の場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t charsigned charunsigned char

[constexpr] QUtf8StringView::storage_type QUtf8StringView::at(qsizetype n) const

この文字列ビューの位置n にあるコードポイントを返す。

n が負またはsize() より小さくない場合、動作は未定義である。

operator[]()、front()、back()も参照

[constexpr] QUtf8StringView::storage_type QUtf8StringView::back() const

文字列ビューの最後のコードポイントを返す。last() と同じ。

この関数は STL との互換性のために提供されています。

警告: 空の文字列ビューでこの関数を呼び出すと、未定義の動作になります。

front()も参照してください

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::begin() const

文字列ビューの最初のコードポイントを指す constSTL 形式のイテレータを返します。

この関数は STL との互換性のために提供されています。

end(),cbegin(),rbegin(),data()も参照

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::cbegin() const

begin() と同じ。

この関数は STL との互換性のために提供されている。

cend(),begin(),crbegin(),data()も参照

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::cend() const

end() と同じ。

この関数は STL との互換性のために提供されている。

cbegin(),end(),crend()も参照

[constexpr] void QUtf8StringView::chop(qsizetype n)

この文字列ビューをn コードポイントで切り捨てる。

*this = first(size() - n) と同じ。

注意: n < 0 またはn >size() の場合の動作は未定義。

sliced()、first()、last()、chopped()、truncate()も参照のこと

[constexpr] QUtf8StringView QUtf8StringView::chopped(qsizetype n) const

このオブジェクトの先頭から始まる、長さsize() -n の部分文字列を返す。

first(size() - n) と同じ。

注意: n < 0 またはn >size() の場合の動作は未定義。

sliced()、first()、last()、chop()、truncate()、slice()も参照

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::crbegin() const

rbegin() と同じ。

この関数は STL との互換性のために提供されている。

crend(),rbegin(),cbegin()も参照

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::crend() const

rend() と同じ。

この関数は STL との互換性のために提供されている。

crbegin(),rend(),cend()も参照

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

文字列ビューの最初のコードポイントへの const ポインタを返します。

注意: 返り値で表される文字配列は、ヌル終端ではありません

begin()、end()、utf8()も参照

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

この文字列ビューが空かどうか、つまりsize() == 0 かどうかを返します。

この関数は STL との互換性のために提供されています。

isEmpty(),isNull(),size(),length()も参照してください

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::end() const

リストの最後のコードポイントの後の虚数コードポイントを指す、STLスタイルのイテレータを返します。

この関数は STL との互換性のために提供されています。

begin()、cend()、rend()も参照

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

この文字列ビューの最初のn コードポイントを含む文字列ビューを返す。

注意: n < 0 またはn >size() の場合の動作は未定義。

last()、sliced()、chopped()、chop()、truncate()、slice()も参照

[static constexpr noexcept] template <typename Char, size_t Size, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView QUtf8StringView::fromArray(const Char (&)[Size] string)

文字列リテラルstring の末尾Char(0) を含む完全な文字列ビューを構築します。ヌル・ターミネータをビューに含めたくない場合は、chop() でヌル・ターミネータを削除します。また、コンストラクタのオーバーロードで配列リテラルを使用することもできます。 このオーバーロードは、データ中の最初のヌル終端を含まない、その終端までのビューを作成します。

string は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。

この関数は、Char が互換性のある文字型であれば、どの配列リテラルでも動作します。互換性のある文字型は以下のとおりです:char8_t char,signed char およびunsigned char です。

[constexpr] QUtf8StringView::storage_type QUtf8StringView::front() const

文字列ビューの最初のコードポイントを返す。first() と同じ。

この関数は STL との互換性のために提供されています。

警告: 空の文字列ビューでこの関数を呼び出すと、未定義の動作になります。

back()も参照してください

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

この文字列ビューが空かどうか、つまりsize() == 0 かどうかを返します。

この関数は、他の Qt コンテナとの互換性のために提供されています。

empty(),isNull(),size(),length()も参照してください

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

この文字列ビューが null かどうか、つまりdata() == nullptr かどうかを返します。

この関数は、他の Qt コンテナとの互換性のために提供されています。

empty(),isEmpty(),size(),length()も参照してください

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

この文字列が有効な UTF-8 エンコード・データを含んでいる場合はtrue を、そうでない場合はfalse を返します。

この関数は Qt 6.3 で導入されました。

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

この文字列ビューの最後のn コードポイントを含む文字列ビューを返す。

注意: n < 0 またはn >size() の場合の動作は未定義。

first()、sliced()、chopped()、chop()、truncate()、slice()も参照

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

size() と同じ。

この関数は、他の Qt コンテナとの互換性のために提供されています。

empty(),isEmpty(),isNull(),size()も参照してください

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

ビューが理論的に表現できる要素の最大数を返します。実際には、システムで利用可能なメモリ量によって制限されるため、もっと少ない数になることがあります。

この関数は Qt 6.8 で導入されました。

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

この関数は STL との互換性のために提供されている。

maxSize() を返します。

この関数は Qt 6.8 で導入されました。

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::rbegin() const

文字列ビューの最初のコードポイントを指す constSTL 形式の逆順イテレータを返します。

この関数は STL との互換性のために提供されています。

rend()、crbegin()、begin()も参照

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::rend() const

STL 形式の逆イテレータを、文字列ビューの最後のコードポイントから逆順に 1 つ先のコードポイントを指すように返します。

この関数は STL との互換性のために提供されています。

rbegin()、crend()、end()も参照

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

この文字列ビューのサイズを UTF-8 コードポイント単位で返します (つまり、この関数ではマルチバイトのシーケンスは 1 つ以上としてカウントされます。QString およびQStringView のサロゲートペアと同じです)。

empty()、isEmpty()、isNull()、length()も参照

[constexpr, since 6.8] QUtf8StringView &QUtf8StringView::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] QUtf8StringView &QUtf8StringView::slice(qsizetype pos)

これはオーバーロードされた関数です。

この文字列ビューをpos の位置から開始し、その終わりまで拡張するように変更します。

注意: pos < 0 またはpos >size() の場合の動作は未定義です。

この関数は Qt 6.8 で導入されました。

sliced(),first(),last(),chopped(),chop(),truncate()も参照してください

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

このオブジェクトの位置pos を始点とし、その終点までの文字列ビューを返します。

注意: pos < 0 またはpos >size() の場合の動作は未定義です。

first()、last()、chopped()、chop()、truncate()、slice()も参照

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

pos の位置から始まる、この文字列ビューのn コードポイントを含む文字列ビューを返す。

注意: pos < 0,n < 0, またはpos +n >size() の場合、動作は未定義。

first()、last()、chopped()、chop()、truncate()、slice()も参照のこと

QString QUtf8StringView::toString() const

この文字列ビューのデータのディープコピーをQString として返します。

この文字列ビューがNULLである場合に限り、戻り値はNULLQString になります。

[constexpr] void QUtf8StringView::truncate(qsizetype n)

この文字列ビューをn コードポイントに切り詰める。

*this = first(n) と同じ。

注意: n < 0 またはn >size() の場合の動作は未定義。

sliced()、first()、last()、chopped()、chop()も参照のこと

[noexcept] const char8_t *QUtf8StringView::utf8() const

文字列ビューの最初のコードポイントへの const ポインタを返します。

結果はconst char8_t* として返されるため、この関数は C++20 モードでコンパイルした場合にのみ使用できます。

注意: 戻り値で表される文字配列は、ヌル終端ではありません

begin ()、end ()、data)も参照して ください。

[noexcept, since 6.7] std::basic_string_view<QUtf8StringView::storage_type> QUtf8StringView::operator std::basic_string_view<QUtf8StringView::storage_type>() const

このQUtf8StringView オブジェクトをstd::basic_string_view オブジェクトに変換します。返されるビューは、このビューと同じデータポインタと長さを持ちます。返されるビューの文字タイプはstorage_type になります。

この関数は Qt 6.7 で導入されました。

[constexpr] QUtf8StringView::storage_type QUtf8StringView::operator[](qsizetype n) const

この文字列ビューの位置n にあるコードポイントを返す。

n が負またはsize() より小さくない場合、動作は未定義である。

at()、front()、back()も参照

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