std::string 의 데이터를 char* 로 접근하여 채워넣는 방법;;
안녕하세요. 궁금한 점이 있어서 글 올립니다 ㅜ_ㅜ
지금 open source 를 프로그램에 포팅하는 작업을 하고 있는데요.
이 open source 가 C 로 되어 있고, 코드는 공개 되어 있으나 수정이 불가합니다.
문제는 lib 사용할 코드는 C++ 로 되어 있고, 대부분의 문자열 관련 변수를 std::string 을 사용하고 있습니다.
char *인 함수의 input 에 std::string 타입을 넣어서 값을 반환 받아야 합니다.
문제는 예를들어 lib 에 아래와 같은 코드가 있는데
bool GetFileName(char *pStr)
{
char *pTemp = NULL;
--- 중략 ---
pTemp 에 malloc 한 후 임의의 문자열을 대입
------------
if(strcpy(pStr, pTemp)) {
return true;
} else {
return false;
}
}
이 함수를 C++ 인 상위 코드에서 사용할 때 std::string 을 사용하여 값을 받아야 합니다.
GetFileName(std::string ????) 이렇게 사용할 수는 없고,
중간에 char 배열의 버퍼를 두어 대입하면 되겠으나, 그렇게 하지않고 할순 없을 까요?
std::string 의 c_str() 은 const 로 char 를 반환하기 때문에 값 채워 넣는 것은 불가능하고;;;
조언 부탁드립니다. (_ _)
소스 코드가 좀 이상한게, 저러면 메모리릭이
소스 코드가 좀 이상한게, 저러면 메모리릭이 날텐데요..
내부에서 malloc을 통해 할당받은 char*를 리턴하는 함수라면
이런식으로 복사하셔야할 것으로 보입니다.
댓글 달기