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()
추가 참고 사항:
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3