std::basic_string<CharT,Traits,Allocator>:: c_str
|
const
CharT
*
c_str
(
)
const
;
|
(C++11以降 noexcept)
(C++20以降 constexpr) |
|
文字列に格納されているデータと同等のデータを持つ、ヌル終端文字配列へのポインタを返します。
このポインタは、範囲
[
c_str
(
)
,
c_str
(
)
+
size
(
)
]
が有効であり、その範囲内の値が文字列に格納された値に対応し、最後の位置の後に追加のnull文字が付加されることを保証します。
c_str()
から取得したポインタは、以下の操作によって無効化される可能性があります:
- 文字列の非const参照を標準ライブラリ関数に渡すこと、または
- 文字列の非constメンバー関数を呼び出すこと (以下を除く operator[] 、 at() 、 front() 、 back() 、 begin() 、 rbegin() 、 end() および rend() (C++11以降) 。
c_str()
を通じてアクセスされる文字配列への書き込みは未定義動作です。
|
|
(C++11以降) |
目次 |
パラメータ
(なし)
戻り値
基となる文字ストレージへのポインタ。
|
c_str
(
)
[
i
]
==
operator
[
]
(
i
)
すべての
|
(C++11まで) |
|
c_str
(
)
+
i
==
std::
addressof
(
operator
[
]
(
i
)
)
すべての
|
(C++11以降) |
計算量
定数。
注記
c_str()
から取得したポインタは、文字列オブジェクトに他のnull文字が含まれていない場合にのみ、null終端文字列へのポインタとして扱うことができます。
例
#include <algorithm> #include <cassert> #include <cstring> #include <string> extern "C" void c_func(const char* c_str) { printf("c_func called with '%s'\n", c_str); } int main() { std::string const s("Emplary"); const char* p = s.c_str(); assert(s.size() == std::strlen(p)); assert(std::equal(s.begin(), s.end(), p)); assert(std::equal(p, p + s.size(), s.begin())); assert('\0' == *(p + s.size())); c_func(s.c_str()); }
出力:
c_func called with 'Emplary'
関連項目
|
(
DR*
)
|
最初の文字にアクセスする
(public member function) |
|
(
DR*
)
|
最後の文字にアクセスする
(public member function) |
|
文字列の最初の文字へのポインタを返す
(public member function) |