일반적으로 const char*
을 반환하려면 호출자에게 출력 메모리 버퍼를 제공해야하며 해당 버퍼의 크기를 조정할 수 없으므로 함수에서 std::string
을 반환합니다.C++에서 문자열 리터럴에서 const char *를 반환 하시겠습니까?
그러나 const char*
이 문자열 리터럴 인 경우 유효합니까? (유효한 경우) 가능성이 더 빨리 내가 동적으로 std::string
를 구성하는 메모리를 할당 할 필요가 없습니다 것 같은 것 이런 식으로 이렇게
const char* generate_c_string() {
return "ABC";
}
.
const char* x = "ABC";
이 유효하기 때문에 유효 할 수 있습니다. C++ 표준의 유효성을 입증하는 참조가 있습니까? string literals에 대한
포인터를 반환 할 때 호출자가 버퍼를 제공해야하는 이유를 이해할 수 없습니다. –
중복으로 투표하기로 결정 했음에도 불구하고 둘 다 여전히 유용하기 때문에 질문과 대답을 모두 취소했습니다. – Tas
이렇게 짧은 문자열의 경우 가장 일반적인 std :: string 구현은 동적 메모리를 할당하지 않습니다. [std :: string의 문맥에서 약어 SSO의 의미] (https://stackoverflow.com/questions/10315041/meaning-of-acronym-soso-in-the-context-of-stdstring) –