본문 바로가기
프로그래밍/C++

C++ ] string -> char *, char * -> string 변환

by eteo 2024. 2. 18.

 

 

C스타일 문자열 char *에서 string으로 변환하거나 반대로 변환하는 법

 

 

char * to string

const char *pChar ="hello";
string str = pChar;
또는
string str(pChar);

 

char *에서 string으로 바꾸는건 간단하다. = 연산자를 통해 초기화하거나 생성자를 통해 초기화하면 된다.

 

 

sring to char *

string str = "hello";
const char *pChar = str.c_str();
또는
char buf[str.length() + 1];
strcpy(buf, str.c_str());

 

string에서 char *로 변환할 때는 string의 수명에 주의해야한다.

위의 변환 방법 중 첫번째 방법의 경우 string 변수가 스코프를 벗어나게 되면 const char 포인터는 더이상 유효하지 않은 메모리를 가리키게 될 수 있다.

따라서 C스타일 문자열을 조작해야 하는 경우나 string 변수로부터 독립적으로 메모리 확보하고 쓰기 위해 두번째 방법처럼 strcpy를 사용해 버퍼에 복사하는 방식을 사용할 수 있다.