C 11의 string::c_str()은 Null 종료를 제거합니까?
C 11에서 string::c_str은 더 이상 Null 종료를 보장하지 않습니다. null로 끝나는 문자열을 생성합니다.
이유:
C 11에서 string::c_str은 string::data와 동일하게 정의됩니다. 0
결과:
이는 string::c_str()이 더 이상 반환되지 않을 수 있음을 의미합니다. null로 끝나는 문자열, 그러한 종료를 가정하는 시나리오에서 잠재적인 오류로 이어질 수 있습니다.
해결책:
해결책은 string::c_str()을 다음 용도로만 사용하는 것입니다. 레거시 코드와의 호환성. 새 코드의 경우 대신 string::data()를 사용하세요. string::data()는 null로 끝나는 문자열을 반환하지 않지만 내부적으로 null로 끝나는 것이 보장되는 기본 버퍼에 대한 포인터를 반환합니다.
구현 세부 정보:
이제 내부적으로 문자열은 null 종료 버퍼를 사용해야 합니다. 섹션 21.4.5의 Operator[] 정의에서는 size() <= pos에 대해 연산자가 ' ' 값을 사용하여 charT()에 대한 참조를 반환하여 null 종료 버퍼를 효과적으로 적용하도록 요구합니다.
추가 참고 사항:
위 내용은 C 11의 `string::c_str()`은 여전히 Null로 종료됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!