size_t strlen ( const char * str );
문자열의 실제 길이를 리턴하는 함수이다. 널문자를 제외한 길이라는 점에 주의하자!!! 참고로 size_t 란건 unsigned int를 재정의한 것이다.
int strcmp ( const char * str1, const char * str2 );
두개의 문자열을 비교하여 동일할 경우 0이 리턴되고, str1이 클 경우 양수, str2가 클 경우 음수가 리턴된다. 여기서 크다는 것은 문자를 아스키 코드값으로 비교한 결과를 말하는 것이다.
errno_t strcpy_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
문자열을 복사하는 strcpy의 새로운 표준형이다. strcpy의 경우 배열의 첨자범위를 넘어설 위험성이 많으므로 최근의 visual studio에서 사용하면 경고 메시지가 뜬다. 중요한건 두번째 인자가 Dest 버퍼의 크기라는 점만 알면 된다. errno_t는 에러체크를 위해 사용되는 리턴값 같은데 실제 사용할때는 신경안써도 된다.
errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource );
복사가 아니라 이어붙이기. 나머지 설명은 위와 동일.
아래는 실제로 문자열을 깊은 복사할때의 코드이다.
가장 주의해서 볼 점은 strlen() 함수는 NULL 문자를 제외한 길이를 리턴한다는 점이다.
char szTemp[256];
cin >> szTemp;
int nLen = strlen(szTemp);
char* m_szName = new char[nLen + 1];
strcpy_s(m_szName, nLen + 1, szTemp);
※ 문자열 함수는 아니지만 콘솔 문자열 입력 관련
cin 객체는 한 개의 문자 단위로 입력받아 처리하며, 공백문자나 개행문자(엔터, '\n')로 tokening 된다.
이때 두 개 이상의 문자를 입력하면 그만큼 예외처리가 여러번 일어나는 것을 볼 수 있다.
이것을 막으려면 입력버퍼를 초기화시키는 fflush(stdin); 명령을 사용하면 편리하다.
cin.getline() 공백문자 포함해서 콘솔에서 문장을 입력받아 저장하는데 사용하는 함수
※ 참조:
http://www.cplusplus.com/
http://msdn.microsoft.com
댓글 없음:
댓글 쓰기