QUtf8StringView Class
QUtf8StringView クラスは、QString API の読み取り専用サブセットを使用して、UTF-8 文字列の統一ビューを提供します。詳細...
Header: | #include <QUtf8StringView> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Since: | Qt 6.0 |
- 継承メンバを含むすべてのメンバの一覧
- 非推奨メンバー
- QUtf8StringViewは文字列データ用クラスの一部です。
このクラスは強く比較可能です。
このクラスは char16_t,QChar, const char16_t *,QString,QStringView,QLatin1StringView と強く比較可能です。
このクラスは、const char *,QByteArray およびQByteArrayView と強く比較可能です。
バイト配列の内容はutf-8として解釈されます。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
const_iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
iterator | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
storage_type | |
value_type |
パブリック関数
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は、自身が所有していないUTF-8文字列の連続部分を参照します。最初にQString やQByteArray を構築する必要がなく、あらゆる種類の UTF-8 文字列へのインターフェース型として機能します。
UTF-8文字列は、char8_t
、char
、signed char
、unsigned 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
を(ポインタとして)使用します:
- storage_type value_type など
- begin(),end(),data(), etc.
- front(),back(),at(), operator[]()
これはQt 7でQUtf8StringViewが期待されるものですが、Qt 6ではこれは不可能でした。今後10年間、ユーザーをC++17時代のインターフェイスに閉じ込める代わりに、Qtは2つのQUtf8StringViewクラスを異なる(インラインの)名前空間で提供しています。1つ目は名前空間q_no_char8_t
、const char
のvalue_type を持ち、汎用的に利用できます。もう 1 つは名前空間q_has_char8_t
にあり、const char8_t
のvalue_type を持ち、C++20 モードでコンパイルする場合にのみ使用できます。
q_no_char8_t
は、偶発的なバイナリの非互換性を避けるため、C++ のエディションに関係なくインライン名前空間です。 バージョンを使用するには、 で明示的に名前を指定する必要があります。char8_t
q_has_char8_t::QUtf8StringView
内部的には、どちらも同じテンプレート・クラスであるQBasicUtf8StringViewのインスタンス化です。テンプレート・クラスの名前をソース・コードで使用しないでください。
QAnyStringView 、QUtf8StringView 、QStringも参照して ください。
メンバ型ドキュメント
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 より大きい場合は正の整数を、等しい場合はゼロを返します。
cs がQt::CaseSensitive の場合(デフォルト)、比較は大文字小文字を区別します。
この関数は Qt 6.5 で導入されました。
[constexpr noexcept]
QUtf8StringView::QUtf8StringView()
ヌル文字列ビューを構築します。
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
char
、signed char
、unsigned char
。
fromArray()も参照してください 。
[constexpr noexcept]
template <typename Char> QUtf8StringView::QUtf8StringView(const Char *str)
str の文字列ビューを構築する。長さは、最初のChar(0)
をスキャンして決定されます。
str は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。
str としてnullptr
を渡すと安全で、NULL 文字列ビューになります。
このコンストラクタは、str が配列でなく、Char
が互換性のある文字型である場合にのみ、オーバーロード解決に参加する。互換性のある文字型はchar8_t
char
,signed char
およびunsigned char
です。
[constexpr noexcept]
template <typename Container, QUtf8StringView::if_compatible_container<Container> = true> QUtf8StringView::QUtf8StringView(const Container &str)
str の文字列ビューを構築します。長さはstd::size(str)
から取得されます。
std::data(str)
は、この文字列ビューオブジェクトの有効期間中有効でなければなりません。
このコンストラクタは、Container
がvalue_type
と互換性のある文字型を持つコンテナである場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t
char
、signed char
、unsigned char
です。
文字列ビューが空になるのは、std::size(str) == 0
の場合のみである。このコンストラクタがNULLの文字列ビューを生成できるかどうかは未定です(std::data(str)
の場合、nullptr
を返す必要があります)。
[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
を渡しても、last がnullptr
の場合は安全であり、NULL 文字列ビューになります。
last がfirst より前にある場合、またはfirst がnullptr
でlast がそうでない場合の動作は未定義です。
このコンストラクタは、Char
が互換性のある文字型の場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t
char
、signed char
、unsigned 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 が負の場合、または正の場合、str がnullptr
の場合の動作は未定義です。
このコンストラクタは、Char
が互換性のある文字型の場合にのみ、オーバーロード解決に参加します。互換性のある文字型は以下のとおりです:char8_t
char
、signed char
、unsigned 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 との互換性のために用意されています。
[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 との互換性のために用意されています。
[constexpr noexcept]
QUtf8StringView::const_pointer QUtf8StringView::data() const
文字列ビューの最初のコードポイントへの const ポインタを返します。
注意: 戻り値で表される文字配列は、ヌル終端ではありません。
[constexpr noexcept]
bool QUtf8StringView::empty() const
この文字列ビューが空かどうか、つまりsize() == 0
かどうかを返します。
この関数は STL との互換性のために提供されています。
isEmpty()、isNull()、size() およびlength()も参照して ください。
[noexcept]
QUtf8StringView::const_iterator QUtf8StringView::end() const
リスト内の最後のコード点の後の虚数コード点を指す constSTL スタイルのイテレータを返します。
この関数は STL との互換性のために提供されています。
[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)
末尾のChar(0)
を含む、完全な文字列リテラルstring に対して文字列ビューを構築します。ヌル・ターミネータをビューに含めたくない場合は、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 との互換性のために用意されています。
[constexpr noexcept]
qsizetype QUtf8StringView::size() const
この文字列ビューのサイズを、UTF-8 コードポイント単位で返します(つまり、この関数では、マルチバイトシーケンスは、QString およびQStringView のサロゲートペアと同じように、1 つ以上と数えます)。
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() より小さくない場合、動作は未定義です。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。