출처 : http://soen.kr/lecture/ccpp/cpp4/36-2-2.htm
예제 :
#include <Turboc.h>
#include <iostream>
#include <string>
using namespace std;
void main()
{
string s("char array");
cout << s.data() << endl;
cout << s.c_str() << endl;
char str[128];
strcpy(str,s.c_str());
printf("str = %s\n",str);
}
문자열 복사 시 참고할만한 좋은 내용 :
data는 객체의 내부 데이터를 그대로 리턴하는 것이고 c_str은 널 종료 문자열이 아닌 경우 사본을 복사한 후 널 종료 문자열로 바꿔서 리턴한다는 점이 다르다.
물론 string 클래스는 널 종료 문자열이므로 string 객체에 대해서는 data와 c_str이 같겠지만 다른 basic_string 템플릿 클래스에서는 결과가 달라질 수도 있다.
그래서 C 스타일의 문자 배열로 string 객체를 복사하고 싶을 때는 c_str 멤버 함수를 사용하는 것이 옳다.
예제에서는 길이 128의 문자형 배열 str로 string 객체 s의 내용을 복사한 후 printf 함수로 출력해 보았다.
string 객체의 길이 제한이 없으므로 원칙대로 하자면 size로 길이 조사 후 +1만큼 할당해서 사용해야 한다.
'C++' 카테고리의 다른 글
[c++11/c++14] constexpr 정리 (0) | 2017.10.30 |
---|---|
String literal 스트링 상수는 괄호가 끝나도 사라지지 않아요~ (0) | 2017.09.18 |
strcpy strncpy (0) | 2017.07.17 |
strcpy_s 등 _s붙은 것들 특징, 문자열들 (1) | 2017.07.17 |
memcpy strncpy 차이 (0) | 2017.07.17 |