std::basic_string<CharT,Traits,Allocator>::operator[]
来自 zh.cppreference.net
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():
1)
|
行为未定义。 |
(C++11 前) |
|
返回对 |
(C++11 起) |
2) 返回对
CharT() 的引用。|
如果 |
(C++26 前) |
|
如果 |
(C++26 起) |
参数
| pos | - | 要返回字符的位置 |
返回值
1)
*
(
begin
(
)
+
pos
)
若
pos
<
size
(
)
,或返回
CharT
(
)
的引用若
pos
==
size
(
)
(C++11 起)
。
2)
*
(
begin
(
)
+
pos
)
若
pos
<
size
(
)
,或返回
CharT
(
)
的引用若
pos
==
size
(
)
。
复杂度
常量。
示例
运行此代码
#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>
的公开成员函数)
|