名稱空間
變體
操作

std::basic_string<CharT,Traits,Allocator>::operator[]

來自 cppreference.com
< cpp‎ | string‎ | basic_string
 
 
 
std::basic_string
 
CharT& operator[]( size_type pos );
(1) (C++20 起為 constexpr)
const CharT& operator[]( size_type pos ) const;
(2) (C++20 起為 constexpr)

返回指定位置 pos 的字元的引用,如果 pos < size(),或者返回 CharT() 的引用,如果 pos == size()。不執行邊界檢查。

如果 pos > size(),則行為未定義。

對於過載 (1),如果 pos == size(),則行為未定義,除非被返回引用指向的物件被修改為除 CharT() 以外的任何值(C++11 起)

目錄

[編輯] 引數

pos - 要返回的字元的位置

[編輯] 返回值

如果 pos < size(),則返回所請求元素的引用;如果 pos == size(),則返回 CharT() 的引用。

[編輯] 複雜度

常數時間。

[編輯] 示例

#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'; // print as a C string
 
    // Change the last character of s into a 'y'
    std::string s("Exemplar ");
    s[s.size() - 1] = 'y'; // equivalent to s.back() = 'y';
    std::cout << s << '\n';
}

輸出

rmx
Exemplar
Exemplary

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 259 C++98 非 const 過載可以返回 const 左值 data()[pos],這是非良構的 改為返回
*(begin() + pos)
LWG 2475 C++11 如果 pos == size(),修改
返回引用指向的物件的行為未定義
如果修改為 CharT(),則行為良好定義
修改為 CharT()

[編輯] 參閱

帶邊界檢查訪問指定字元
(公有成員函式) [編輯]
(DR*)
訪問第一個字元
(公有成員函式) [編輯]
(DR*)
訪問最後一個字元
(公有成員函式) [編輯]
訪問指定的字元
(std::basic_string_view<CharT,Traits> 的公有成員函式) [編輯]