>백엔드 개발 >C++ >C 11에서는 c_str() 및 data()에 대해 Null로 끝나는 문자열이 필요합니까?

C 11에서는 c_str() 및 data()에 대해 Null로 끝나는 문자열이 필요합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-27 03:15:02307검색

 Does C  11 Require Null-Terminated Strings for c_str() and data()?

C 11은 c_str() 메서드에서 Null로 끝나지 않는 문자열을 허용합니까?

C 11에서 c_str( ) basic_string 클래스가 변경되었습니다. 이제 data()와 동일하게 정의되어 문자열의 n번째 요소에 대한 포인터를 반환하도록 정의됩니다. 여기서 n은 0과 문자열 크기에서 1을 뺀 값 사이입니다.

그러나 , c_str() 및 data() 모두의 기반이 되는 Operator[] 메서드의 업데이트된 정의는 문자열이 이제 내부적으로 null로 끝나는 버퍼를 사용해야 함을 분명히 합니다.

특히, Operator[] 메서드에는 다음이 필요합니다. 반환된 값은 charT() 값을 가진 T 유형의 객체에 대한 참조입니다. 여기서 T는 문자열 요소의 유형이고 charT()는 널 문자의 유형입니다. 또한 이 참조 값은 수정할 수 없습니다.

c_str() 및 data()는 모두 O(1) 작업이어야 하므로 구현에서는 본질적으로 null로 끝나는 버퍼를 사용해야 합니다. 또한, Operator[] 메소드의 반환 값 요구 사항은 종료 null 문자가 문자열 요소와 동일한 버퍼에 있어야 함을 의미합니다.

위 내용은 C 11에서는 c_str() 및 data()에 대해 Null로 끝나는 문자열이 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.