std::basic_string<CharT,Traits,Allocator>:: operator[]
|
CharT
&
operator
[
]
(
size_type pos
)
;
|
(1) | (constexpr C++20以降) |
|
const
CharT
&
operator
[
]
(
size_type pos
)
const
;
|
(2) | (constexpr C++20以降) |
指定された位置 pos の文字への参照を返します。 pos < size ( ) の場合、または pos == size ( ) の場合:
|
動作は未定義です。 |
(C++11以前) |
|
CharT ( ) への参照を返します。返された参照が指すオブジェクトが CharT ( ) 以外の値に変更された場合、動作は未定義です。 |
(C++11以降) |
|
pos > size ( ) が true の場合、動作は未定義です。 |
(C++26まで) |
|
pos > size ( ) が true の場合:
|
(C++26以降) |
目次 |
パラメータ
| pos | - | 返される文字の位置 |
戻り値
計算量
定数。
例
#include <iostream> #include <string> int main() { const std::string e("Exemplar"); for (unsigned i = e.length() - 1; i != 0; i /= 2) std::cout << e[i]; std::cout << '\n'; const char* c = &e[0]; std::cout << c << '\n'; // C文字列として出力 // sの最後の文字を'y'に変更 std::string s("Exemplar "); s[s.size() - 1] = 'y'; // s.back() = 'y'; と同等 std::cout << s << '\n'; }
出力:
rmx Exemplar Exemplary
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 259 | C++98 |
オーバーロード
(
1
)
がconst左辺値を返す可能性があり、
これは不適格であった data ( ) [ pos ] |
以下のように変更
* ( begin ( ) + pos ) |
| LWG 2475 | C++11 |
pos
==
size
(
)
の場合、返された参照が指すオブジェクトの
変更動作は未定義であった |
以下の場合に適切に定義
CharT ( ) に変更された場合 |
関連項目
|
境界チェック付きで指定された文字にアクセスする
(公開メンバ関数) |
|
|
(
DR*
)
|
最初の文字にアクセスする
(公開メンバ関数) |
|
(
DR*
)
|
最後の文字にアクセスする
(公開メンバ関数) |
|
指定された文字にアクセスする
(
std::basic_string_view<CharT,Traits>
の公開メンバ関数)
|