본문 바로가기
!?/C++

문자열(string)

by Where's my namespace 2012. 8. 12.

문자열은 말그대로 문자들의 집합. 즉 단어다.  이 단어들을 관리하는데에는 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번째 혼용해서 사용하는 경우는 여러 개발자가 동시에 사용할 경우 잘 얘기해서 사용하면 된다.

 

'!? > C++' 카테고리의 다른 글

클래스 2  (0) 2012.08.19
클래스 1  (0) 2012.08.16
동적메모리 할당  (0) 2012.08.11
함수의 포인터  (0) 2012.08.11
함수의 재귀호출  (0) 2012.08.11