C 11에서는 String::c_str()이 더 이상 Null로 끝나지 않습니까?
C 11에서 string의 동작:: c_str()은 논쟁의 대상이었습니다. 일부 소식통에서는 더 이상 null로 끝나는 문자열을 생성하지 않을 수도 있다고 제안합니다.
그러나 자세히 살펴보면 그렇지 않다는 것이 분명해집니다. C 11의 연산자[] 정의에서는 문자열이 내부적으로 null 종료 버퍼를 사용해야 합니다. 이는 연산자[]로 정의된 c_str()도 Null로 끝나는 문자열을 반환해야 함을 의미합니다.
구체적으로 C 11 표준의 섹션 21.4.5에서는 연산자[]가 반환해야 한다고 명시합니다. "charT() 값을 가진 T 유형의 객체에 대한 참조. 참조된 값은 수정되지 않습니다." 이는 문자열 끝에 널 문자가 포함되어야 함을 의미합니다.
또한 섹션 21.4.7.1/1에서는 c_str()을 "각각에 대해 p i == &operator[](i)가 되는 포인터 p"로 정의합니다. 나는 [0,크기()]에 있습니다." 이는 c_str()이 null로 종료되어야 하는 Operator[]와 동일한 버퍼에 대한 액세스를 제공한다는 것을 의미합니다.
따라서 초기 우려에도 불구하고 string::c_str()은 여전히 null- C 11에서 문자열이 종료됩니다.
위 내용은 다음은 질문 형식을 염두에 두고 몇 가지 제목 옵션입니다. 직접적이고 명확함: * C 11에서는 `string::c_str()`이 여전히 Null로 종료됩니까? * `string::c_str()`은 C에서 Null 종료를 보장합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!