std::string을 const char*나 char*로 바꾸는 방법

std::stringconst char*char*로 바꾸는 방법 좀 알려주세요

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    const char*을 파라미터로 쓰는 함수를 쓰고 싶으신 거면 다음과 같은 방법이 있습니다

    std::string str = "I want to convert string to char*";;
    const char * c = str.c_str();
    

    이 경우에는 const이기 때문에 수정은 못하지요.

    수정할 수 있게 하려면(char*처럼) 다음과 같은 방법이 있습니다.

    std::string str = "I want to convert string to char*";;
    char * writable = new char[str.size() + 1];
    std::copy(str.begin(), str.end(), writable);
    writable[str.size()] = '\0'; // 스트링 끝에 0을 추가해주는 거 잊지 마세요
    delete[] writable;
    

    다만 이 방법은 메모리 누수가 생길 수 있으니까 밑에걸 쓰시는게 좋아요. 이건 다른 라이브러리가 필요 없는 standard한 방법입니다 메모리를 알아서 관리해주지요

    std::string str = "I want to convert string to char*";
    std::vector<char> writable(str.begin(), str.end());
    writable.push_back('\0');
    char* ptr = &writable[0];
    std::cout << ptr;
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.