std::basic_string<CharT,Traits,Allocator>::operator[]
提供: ja.cppreference.net
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() の場合は除きます:
1)
|
動作は未定義です。 |
(C++11まで) |
|
返された参照が指すオブジェクトが |
(C++11から) |
2)
CharT() への参照を返します。|
|
(C++26まで) |
|
|
(C++26から) |
パラメータ
| pos | - | 返される文字の位置 |
戻り値
1)
*
(
begin
(
)
+
pos
)
if
pos
<
size
(
)
、または
CharT
(
)
への参照を返す(
pos
==
size
(
)
の場合)
(C++11以降)
。
2)
*
(
begin
(
)
+
pos
)
if
pos
<
size
(
)
の場合、または
CharT
(
)
への参照を
pos
==
size
(
)
の場合に返します。
計算量
定数。
例
このコードを実行
#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>の公開メンバ関数)
|