반응형

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
Posted by Real_G