std::basic_string<CharT,Traits,Allocator>:: operator[]
|
CharT
&
operator
[
]
(
size_type pos
)
;
|
(1) | (自 C++20 起为 constexpr) |
|
const
CharT
&
operator
[
]
(
size_type pos
)
const
;
|
(2) | (自 C++20 起为 constexpr) |
返回指定位置 pos 处字符的引用,当满足 pos < size ( ) 或 pos == size ( ) 时:
|
该行为是未定义的。 |
(C++11 前) |
|
返回 CharT ( ) 的引用,若通过返回的引用修改所引用的对象为任何非 CharT ( ) 的值,则行为是未定义的。 |
(C++11 起) |
|
若 pos > size ( ) 为 true ,则行为未定义。 |
(C++26 前) |
|
若 pos > size ( ) 为 true : |
(C++26 起) |
目录 |
参数
| pos | - | 要返回字符的位置 |
返回值
复杂度
常量。
示例
#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++标准。
| 缺陷报告 | 应用于 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 259 | C++98 |
重载
(
1
)
可能返回常量左值
data ( ) [ pos ] ,这是不合法的 |
改为返回
* ( begin ( ) + pos ) |
| LWG 2475 | C++11 |
若
pos
==
size
(
)
,修改返回引用所引用对象
的行为是未定义的 |
若修改为
CharT
(
)
则行为是明确定义的 |
参见
|
访问指定字符(带边界检查)
(公开成员函数) |
|
|
(
DR*
)
|
访问首字符
(公开成员函数) |
|
(
DR*
)
|
访问末字符
(公开成员函数) |
|
访问指定字符
(
std::basic_string_view<CharT,Traits>
的公开成员函数)
|