>  기사  >  백엔드 개발  >  다음은 질문 형식을 염두에 두고 몇 가지 제목 옵션입니다. 직접적이고 명확함: * C 11에서는 `string::c_str()`이 여전히 Null로 종료됩니까? * `string::c_str()`은 C에서 Null 종료를 보장합니다.

다음은 질문 형식을 염두에 두고 몇 가지 제목 옵션입니다. 직접적이고 명확함: * C 11에서는 `string::c_str()`이 여전히 Null로 종료됩니까? * `string::c_str()`은 C에서 Null 종료를 보장합니다.

Barbara Streisand
Barbara Streisand원래의
2024-10-26 14:34:02275검색

Here are a few title options, keeping in mind the question format:

Direct and Clear:

* Is `string::c_str()` Still Null-Terminated in C  11?
* Does `string::c_str()` Guarantee Null Termination in C  11?

More Engaging:

* C  11 Mystery: Is `string::c_str

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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