std::basic_string<CharT,Traits,Allocator>::data
提供: 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) | ||
const CharT* data() const; |
(C++11未満) | |
const CharT* data() const noexcept; |
(C++11以上) (C++20未満) |
|
constexpr const CharT* data() const noexcept; |
(C++20以上) | |
| (2) | ||
CharT* data() noexcept; |
(C++17以上) (C++20未満) |
|
constexpr CharT* data() noexcept; |
(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以上) |
計算量
一定。
例
Run this code
#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()));
}
関連項目
(C++11) |
最初の文字にアクセスします (パブリックメンバ関数) |
(C++11) |
最後の文字にアクセスします (パブリックメンバ関数) |
| 文字列の変更不可能な標準 C の文字配列バージョンを返します (パブリックメンバ関数) |