std :: string :: c_str 및 std :: string :: data의 차이점은 무엇입니까? [복제하다

StackOverflow https://stackoverflow.com/questions/1534399

  •  20-09-2019
  •  | 
  •  

문제

이 질문은 이미 여기에 답이 있습니다.

왜 내가 전화하고 싶을까요? 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());
    }

그래서 그들은 같은 것을 돌려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top