string 객체의 c_str() 함수
string 을 char* 형으로 변환해주어 문자열 관련 함수들인 strcmp(), strcat() 등을 사용할 수 있게 해준다.
예를 들어
const char* AA = "abcde";
string str;
str = AA;
//cout << str << endl; 이런 오류다.
cout << str.c_str() << endl; //이건 된다.
오류 메시지는 이렇다.
오류 1 error C2679: 이항 '<<' : 오른쪽 피연산자로 'std::string' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다. c:\documents and settings\zzang2k\my documents\visual studio 2008\projects\090121\090121\090121.cpp 21 090121
c_str() 함수를 통해서 str 변수는 string 타입에서 char* 타입으로 형변환 된 것이다.
문자열 함수는 대부분 char* 형으로 사용하기 때문에.. 유용하게 사용할 수 있다.
아래 참고..
추가 :
1. strcpy(...)
원형( prototype ) :
char *strcpy(char *dest, const char *src);
설명 : src가 지시하는 문자열을 dest라는 포인터가 지시하는 공간에 복사하고
그 결과 문자열 dest을 리턴합니다..
예 : char newstr[32];
char oldstr[] = "coffee";
strcpy( newstr, oldstr );
결과 : newstr -> "coffee"
2. strcat(...)
원형( prototype )
char *strcat(char *dest, const char *src);
설명 : src가 지시하는 문자열(src 문자열 )을 dest가 지시하는 문자열의
끝에 덧 붙이고 결과를 리턴합니다.
예 : char str1[] = "abc";
char str2[] = "def";
strcat( str1, str2 );
결과 : str1 -> "abcdef"
3. strcmp(..)
원형( prototype)
int strcmp(const char *s1, const char *s2);
설명 : 문자열 s1과 s2를 사전식( 오름차순 )으로 비교하여 결과를 리턴합니다.
예 : char str1[] = "big";
char str2[] = "bigger";
int result;
result = strcmp( str1, str2 );
result 가 0 이면 str1과 str2가 같은 문자열
result가 양수이면 str1이 str2보다 크다 ( str1이 str2의 뒤에 위치 )
result가 음수이면 str1이 str2보다 작다 ( str1이 str2보다 앞선다 )
"big"과 "bigger"의 비교
"big" "bigger"
'b' 'b'
'i' 'i'
'g' 'g'
'\0' 'g'
최초로 일치하지 아니하는 문자의 차(difference)를 strcmp의 결과로 리턴합니다.
'\0' - 'g' => 0 - 103 = -103를 리턴
'C & C++ 관련' 카테고리의 다른 글
SmartPointer (0) | 2009.07.26 |
---|---|
c++ 반복자 (0) | 2009.06.25 |
Directory Manager 2 (0) | 2009.06.24 |