string 관련문의
글쓴이: auditory / 작성시간: 월, 2008/03/17 - 2:28오후
void func(const char* str);
타입의 함수가 있습니다.
std::string str;
std::ostringstream oss;
의 두개의 변수에 대해서
func(str.c_str());
는 잘 동작합니다. 그런데
func(oss.str().c_str())
함수는 화면에 출력되는 글자가 깨집니다.
글자는 일반 영문이고, 함수는 fltk 라이브러리의 함수로 윈도우 타이틀에 표시되는 내용입니다.
물론 cout << oss.str().c_str(); 는 잘 동작합니다.
std::string에 카피해서 쓰면 문제는 해결되는데..
문제의 원인은 무엇일까요?
Forums:
함수(위의 경우
함수(위의 경우 std::ostringstream::str())의 반환값은 임시 객체(temporary) 이고 임시 객체는 표현식(expression)의 평가(evaluation)가 끝나면 소멸(destruction)되기 때문입니다. 위의 경우 표현식은 oss.str().c_str()입니다.
댓글 달기