std::basic_string<CharT,Traits,Allocator>::data - cppreference.com
提供: cppreference.com
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
| (1) | ||
|
|
(C++11未満) | |
|
|
(C++11以上) (C++20未満) |
|
|
|
(C++20以上) | |
| (2) | ||
|
|
(C++17以上) (C++20未満) |
|
|
|
(C++20以上) | |
文字の記憶域として供給されているベースとなる配列を指すポインタを返します。 ポインタは範囲 [data(); data() + size()) が有効であり、その中の値は文字列に格納されている値に対応しています。
|
返された配列はヌル終端されているとは限りません。 empty() が |
(C++11未満) |
|
返された配列はヌル終端されています。 つまり、 empty() が |
(C++11以上) |
data() から取得したポインタは以下の場合に無効化されるかもしれません。
- 文字列の非 const 参照を何らかの標準ライブラリ関数に渡す
operator[](), at(), front(), back(), begin(), end(), rbegin(), rend() 以外の非 const メンバ関数を文字列に対して呼ぶ
1) data の const オーバーロードを通してアクセスできる文字配列を変更することは未定義動作です。
2) data()+size() の位置に格納されているヌル終端文字を CharT() 以外の文字に変更することは未定義動作です。
引数
(なし)
戻り値
ベースとなる文字記憶域を指すポインタ。
|
|
(C++11未満) |
|
|
(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())); }