C++/C++

std::string 을 const char* 로 전달하기

Elan 2021. 3. 5. 23:40

const char* 로  전달


std::string str = "I want to convert string to char*";;

const char *cs = str.c_str(); // c_str() 의 반환형은 const char *이기 때문에 수정은 못함.


수정할 수 있는 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을 추가해줘야 함  ( 0 은 Null 을 의미 )

delete[] writable;

메모리 누수 조심.

std::string str = "I want to convert string to char*";
char *ss = (char*)str.c_str(); // 수정하고 싶으면 (char*)로 명시적 형변환

vector 컨테이너를 사용하여 전달 ( 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;

vector 라는 container는 메모리 관리를 알아서 해줌

 

 

 

char* to std::string 은 대입 시 그냥 바로 복사 전달 됨