C++에서는 스트링을 C스트링과 STL의 스트링 클래스로 제공한다.
C스트링은 C에서 계승된 방식으로 char배열 형태로 나타낸다. char배열에 끝에 '\0'문자(널 문자)를 넣어 문자열의 끝을 나타낸다. 예를들어 "hello world"를 저장한다고 하면 11문자 + 널문자를 해서 총 12개의 배열공간이 필요하다.
선언
c스트링은
char 변수이름[최대문자열길이+1]; 형태로 선언한다.
char str[10];
초기화
c스트링은 =키워드를 이용하여 초기화 할 수 있다.
char str[10] = "hello";
이렇게 하면 배열에
str[0] str[1] str[2] str[3] str[4] str[5] str[6] str[7] str[8] str[9]
h e l l o \0 ? ? ? ?
이같이 저장된다.
크기가 10인 배열을 선언하면 최대 9자까지 저장이 가능하지만 굳이 모든 원소를 사용하지 않아도 된다.
초기화시에 배열의 크기를 지정하지 않고도 선언할 수 있다.
char str[] = "hello"
이와같이 선언하면 6의 크기를 가지는 배열을 자동으로 설정해준다.
이 방법으로 선언할시에는 반드시 초기화를 해주어야 한다.
char str[]; 이 방법은 가능하지 않다.
값 할당
c스트링은 =키워드로 할당을 할 수 없다.
예를들어
char str[10];
str = "hello";
그래서 c스트링에 값을 할당하려면 <cstring>라이브러리의 strcpy함수를 이용한다.
strcpy(str,"hello");
equal(==)
c스트링은 ==로 비교를 할 수 없다.
마찬가지로 비교를 하려면 <cstring>라이브러리의 strcmp함수를 이용한다.
strcmp(str1,str2);
strcmp함수는 두 스트링이 같으면 false 다르면 true를 리턴한다.
<cstring>,<string.h> 함수
1. strcpy(str1,str2) - 문자열(스트링) 복사
str2의 값을 str1에 복사
strcpy(str1, "abc");
str1에 abc를 복사
2. strncpy(str1,str2,n) - n개의 문자열(스트링) 복사
str2의 값을 n개까지 str1에 복사
strncpy(str1,"abc",2);
str1에 ab를 복사
3. strcat(str1,str2) - 문자열(스트링) 연결
str2의 값을 str1의 끝에 연결함
char str1[10] = "abc";
strcat(str1,"def");
str1의 끝에 def를 복사
str1 -> "abcdef"
4. strlen(str) - 문자열(스트링) 길이반환
str의 길이를 반환(널값은 포함되지 않는다.)
char str1[10] = "abc";
strlen(str) -> 3
5. strcmp(str1,str2) - 문자열(스트링) 비교
두 스트링의 아스키 값을 비교하여
str1과 str2가 동일 하면 0을
str1이 크면 1을
str2가 크면 -1을 리턴한다.
즉 같으면 0(false) 같지 않으면 0이 아닌값(true)
char str1[10] = "123";
strcmp(str1, "123") -> 0
strcmp(str1, "456") -> -1
strcmp(str1, "000") -> 1
'Language, IDE > C, C++' 카테고리의 다른 글
[C/C++] 문자 조작 함수2 (0) | 2013.07.03 |
---|---|
[C/C++] 문자 조작 함수1 (0) | 2013.07.02 |
[C++] 연산자 오버로딩 (0) | 2013.06.28 |
[C++] 프렌드 함수 (0) | 2013.06.28 |
[C++] 클래스 디폴트 접근 제어자 (0) | 2013.06.26 |