std::basic_string<CharT,Traits,Allocator>::operator[]
來自 cppreference.com
< cpp | string | 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> 的公有成員函式) |