std::basic_string<CharT,Traits,Allocator>::at
From cppreference.com
< cpp | string | basic string
CharT& at( size_type pos ); |
(1) | (C++20 以降 constexpr) |
const CharT& at( size_type pos ) const; |
(2) | (C++20 以降 constexpr) |
指定された位置 pos の文字への参照を返します。境界チェックが実行され、無効なアクセスの場合には std::out_of_range 型の例外がスローされます。
目次 |
[編集] パラメーター
| pos | - | 返される文字の位置 |
[編集] 戻り値
要求された文字への参照。
[編集] 例外
pos >= size() の場合、std::out_of_range をスローします。
何らかの理由で例外がスローされた場合、これらの関数は効果がありません(強力な例外安全性保証)。
[編集] 計算量
定数。
[編集] 例
このコードを実行
#include <iostream> #include <stdexcept> #include <string> int main() { std::string s("message"); // for capacity s = "abc"; s.at(2) = 'x'; // OK std::cout << s << '\n'; std::cout << "string size = " << s.size() << '\n'; std::cout << "string capacity = " << s.capacity() << '\n'; try { // This will throw since the requested offset is greater than the current size. s.at(3) = 'x'; } catch (std::out_of_range const& exc) { std::cout << exc.what() << '\n'; } }
実行結果の例
abx string size = 3 string capacity = 7 basic_string::at
[編集] 欠陥レポート
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 847 | C++98 | 例外安全性保証がなかった | 強力な例外安全性保証を追加 |
| LWG 2207 | C++98 | pos >= size() が true の場合、動作が未定義でした。 | この場合、常に例外をスローします。 |
[編集] 関連項目
| 指定された文字にアクセスする (public member function) | |
| 境界チェック付きで指定された文字にアクセスする ( std::basic_string_view<CharT,Traits> の public メンバー関数) |