문자열은 말그대로 문자들의 집합. 즉 단어다. 이 단어들을 관리하는데에는 3가지 방법이 있다.
크게 3가지 분류는 다음과 같다.
1. C 스타일
2. C++ 스타일
3. C 와 C++의 혼합
하나씩 알아보자 . 우선 C 스타일이다.
C스타일의 문자열을 사용하기 위해선 #include <cstring> 를 호출해야 사용할 수 있다. 저 헤더파일에는
문자열을 관리하는 함수들이 들어있어서 사용자가 필요한 함수를 호출해서 사용하면된다. 가장 많이 쓰는 4가지만 살펴보자.
1. 문자열이 길이 파악
strlen( 문자열명);
으로 사용하고, 반환값으로 문자열 길이를 반환한다. 단 반환한 문자 길이는 NULL문자 바로 앞까지의 길이다.
2. 문자열 복사
strcpy(복사 받을 문자열, 복사 할 문자열);
로 사용하며 복사 받을 문자열에 복사 할 문자열을 복사한다. 중요한 점은 복사 받을 문자열의 크기가 충분히 커야한다.
3. 문자열 합치기.
strcat( 문자열1, 문자열2) ;
로 사용하며, 문자열1의 끝부분(NULL이 있는 부분) 부터 문자열2 를 붙여넣는다.
4. 문자열 비교.
strcmp( 대상1, 대상2);
로 사용하며, 대상1과 대상2를 비교해서 같으면 0을 반환한다.
위의 4가지가 C스타일 문자열에 많이 쓰이는 함수들이다. 추가적으로 하나 더 붙이자면,
5. 공백이 들어간 문자열 받기.
cin.getline(변수명, 변수크기);
로 사용한다. 예를 들면, cin.getline(str, 20); 과 같이 사용하고 만약 입력받은 문자열이 변수크기를 초과할 경우 cin 함수가 실패로 된다.
C++ 스타일을 살펴보자.
헤더파일로 #include <string> 를 호출해야 사용 할 수 있다.
C++스타일에서 많이 사용하는 기능들을 살펴보자.
1.문자열 길이
문자열.size();
로 같이 간편하게 사용 할 수 있다. 매우 간편하다.
2. 문자열 복사
str1 = str2;
로 같이 정말 간단하게 사용 할 수 있다.
3. 문자열 합치기
str1 = str1 + str2;
정말 말도 안되게 간단하다. 설명이 필요없다.
4.문자열 비교
if( str1 == "abcd" )
와 같이 일반적인 비교를 사용하면 간단히 비교가 가능하다. 정말 간단하다.
5.특정 부분만 읽기
문자열명.substr( 시작지점, 시작지점 + @ );
로 사용 할 수 있다. 예를 들면 str1.substr(27 , 3 ) 이라면 27, 28 29 번째의 문자 3개를 읽는다.
6. 공백이 들어간 문자열 받기.
getline( 문자열 받기에 이용 할 함수, 문자열명);
으로 사용 할 수 있다. 예를 보자. getline( cin, str1); 으로 사용 할 수 있다. 문자열 받기에 이용 할 함수의 경우 보통 cin 을 사용한다.
그렇다면 의문점이 들 것이다. C++스타일이 훨씬 간편한데 왜 C스타일을 쓰느냐. 그건 이미 짜여진 코드에서 수정해야 하는 경우거나 개인이 선호하는 스타일이 다르기 때문에 그렇다.
3번째 혼용해서 사용하는 경우는 여러 개발자가 동시에 사용할 경우 잘 얘기해서 사용하면 된다.