Namespaces
Variants

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

From cppreference.net
std::basic_string
CharT & operator [ ] ( size_type pos ) ;
(1) (constexpr since C++20)
const CharT & operator [ ] ( size_type pos ) const ;
(2) (constexpr since C++20)

지정된 위치 pos 에 있는 문자에 대한 참조를 반환합니다. pos < size ( ) 이거나 pos == size ( ) 인 경우:

1)

동작은 정의되지 않습니다.

(C++11 이전)

CharT ( ) 에 대한 참조를 반환합니다. 반환된 참조가 가리키는 객체가 CharT ( ) 이외의 값으로 수정되는 경우, 동작은 정의되지 않습니다.

(C++11 이후)
2) CharT ( ) 에 대한 참조를 반환합니다.

만약 pos > size ( ) true 라면, 동작은 정의되지 않습니다.

(C++26 이전)

만약 pos > size ( ) true 라면:

  • 구현이 hardened 된 경우, contract violation 이 발생합니다. 또한 계약 위반 핸들러가 "observe" 평가 의미론 하에 반환된다면, 동작은 정의되지 않습니다.
  • 구현이 hardened 되지 않은 경우, 동작은 정의되지 않습니다.
(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++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 259 C++98 오버로드 ( 1 ) 가 const lvalue를 반환할 수 있었음
data ( ) [ pos ] , 이는 잘못된 형식이었음
다음으로 변경됨:
* ( begin ( ) + pos )
LWG 2475 C++11 만약 pos == size ( ) , 반환된 참조가 가리키는 객체를
수정하는 동작이 정의되지 않았음
다음으로 수정될 경우 명확히 정의됨:
CharT ( )

참고 항목

지정된 문자에 경계 검사와 함께 접근
(public member function)
( DR* )
첫 번째 문자에 접근
(public member function)
( DR* )
마지막 문자에 접근
(public member function)
지정된 문자에 접근
( std::basic_string_view<CharT,Traits> 의 public member function)