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

조회수 50817회

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;
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)