名前空間
変種
操作

std::basic_string::data

提供: cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
const CharT* data() const;
(1)
CharT* data();
(2) (C++17およびそれ以降)

文字の記憶域として供給されているベースとなる配列を指すポインタを返します。 ポインタは範囲 [data(); data() + size()) が有効であり、その中の値は文字列に格納されている値に対応しています。

返された配列はNULL終端されているとは限りません。

empty()true を返す場合、そのポインタは逆参照するべきでない非NULLなポインタです。
(C++11以前)

返された配列はNULL終端されています。 つまり、 data()c_str() は同じ機能を持ちます。

empty()true を返す場合、そのポインタは1個のNULL文字を指します。
(C++11およびそれ以降)

data() から取得したポインタは以下の場合に無効化されるかもしれません。

1) data の const オーバーロードを通してアクセスできる文字配列を変更することは未定義動作です。
2) data()+size() の位置に格納されているNULL終端文字を変更することは未定義動作です。

目次

[編集] 引数

(なし)

[編集] 戻り値

ベースとなる文字記憶域を指すポインタ。

[0, size()) 内のすべての i について data()[i] == operator[](i) が成り立ちます。 (C++11以前)
[0, size()] 内のすべての i について data() + i == &operator[](i) が成り立ちます。 (C++11およびそれ以降)

[編集] 計算量

一定。

[編集] 例外

(なし) (C++11以前)
noexcept 指定:  
noexcept
  
(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()));
}


[編集] 関連項目

(C++11)
最初の文字にアクセスします
(パブリックメンバ関数) [edit]
(C++11)
最後の文字にアクセスします
(パブリックメンバ関数) [edit]
文字列の変更不可能な標準 C の文字配列バージョンを返します
(パブリックメンバ関数) [edit]