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 |
- 継承メンバを含む全メンバのリスト
- 非推奨メンバー
- 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 より大きい場合は正の整数、等しい場合は 0 を返す。
cs がQt::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
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
リストの最後のコードポイントの後の虚数コードポイントを指す、STLスタイルのイテレータを返します。
この関数は 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)
文字列リテラル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 との互換性のために提供されています。
[noexcept]
QUtf8StringView::const_reverse_iterator QUtf8StringView::rend() const
STL 形式の逆イテレータを、文字列ビューの最後のコードポイントから逆順に 1 つ先のコードポイントを指すように返します。
この関数は STL との互換性のために提供されています。
[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() より小さくない場合、動作は未定義である。
© 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.