std :: string :: c_str 및 std :: string :: data의 차이점은 무엇입니까? [복제하다
문제
이 질문은 이미 여기에 답이 있습니다.
왜 내가 전화하고 싶을까요? std::string::data()
~ 위에 std::string::c_str()
? 분명히 표준의 광기에는 여기에 몇 가지 방법이 있습니다 ...
해결책
c_str ()는 NUL 종료를 보장합니다. 데이터 ()는 그렇지 않습니다.
다른 팁
c_str ()는 NUL 바이트가 추가 된 데이터에 대한 포인터를 반환하여 반환 값을 "C 문자열"으로 사용할 수 있습니다.
Data ()는 수정없이 데이터에 대한 포인터를 반환합니다.
사용중인 코드가 문자열이 종료 된 것으로 가정 한 경우 C_STR ()를 사용하십시오 (예 : C 문자열을 처리하도록 작성된 함수).
이제 MS STL 10.0에서는 헤더에서 볼 수 있듯이 차이가없는 것 같습니다.
... Microsoft Visual Studio 10.0 vc include xstring
const _Elem *c_str() const
{ // return pointer to null-terminated nonmutable array
return (_Myptr());
}
const _Elem *data() const
{ // return pointer to nonmutable array
return (c_str());
}
그래서 그들은 같은 것을 돌려줍니다.
제휴하지 않습니다 StackOverflow