std::basic_string<CharT,Traits,Allocator>::data
const CharT* data() const;
|
(1) | (C++11からnoexcept) (C++20からconstexpr) |
CharT* data() noexcept;
|
(2) | (C++17から) (C++20からconstexpr) |
文字ストレージとして機能する内部配列へのポインタを返します。このポインタは、範囲
|
|
(C++11まで) |
|
|
(C++11から) |
が有効であり、その中の値が文字列に格納されている値に対応するようなものです。
|
返される配列は null 終端されている必要はありません。 もし empty() が |
(C++11まで) |
|
返される配列は null 終端されています。つまり、 もし empty() が |
(C++11から) |
data() から取得されたポインタは、以下によって無効化される可能性があります:
- 文字列への非 const 参照を任意の標準ライブラリ関数に渡すこと、または
operator[](), at(), front(), back(), begin(), end(), rbegin(), rend() を除く、文字列の非 const メンバ関数を呼び出すこと。
data の const オーバーロードを通じてアクセスされた文字配列を変更することは、未定義の動作です。data() + size() に格納された終端の null ターミネータを CharT() 以外の値に変更することは、未定義の動作です。パラメータ
(なし)
戻り値
基礎となる文字ストレージへのポインタ。
|
data
(
)
[
i
]
==
operator
[
]
(
i
)
すべての
|
(C++11まで) |
|
data
(
)
+
i
==
std::
addressof
(
operator
[
]
(
i
)
)
すべての
|
(C++11以降) |
計算量
定数。
例
#include <algorithm> #include <cassert> #include <cstring> #include <string> int main() { std::string const s("Emplary"); assert(s.size() == std::strlen(s.data())); assert(std::equal(s.begin(), s.end(), s.data())); assert(std::equal(s.data(), s.data() + s.size(), s.begin())); assert('\0' == *(s.data() + s.size())); }
関連項目
|
(
DR*
)
|
最初の文字にアクセスする
(公開メンバ関数) |
|
(
DR*
)
|
最後の文字にアクセスする
(公開メンバ関数) |
|
文字列の変更不可能な標準C文字配列バージョンを返す
(公開メンバ関数) |
|
|
ビューの最初の文字へのポインタを返す
( std::basic_string_view<CharT,Traits>の公開メンバ関数)
|