名前空間
変種
操作

std::basic_string<CharT,Traits,Allocator>::at

From cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::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 メンバー関数) [編集]
English 日本語 中文(简体) 中文(繁體)