문자열(string) 기초
- 문자열이란?
문자배열과의 차이점 (2가지)
1. 문자열에는 널(NULL)문자(\0)가 자동으로 들어간다.
널문자란 문자열의 끝을 의미한다
char v[3] = { 'A', 'B' ,'C' };
char v[4] = "ABC"; - 항상 널문자까지 들어간다고 생각하는 것이 헷갈리지않는다
2. 문자열 입력 시 꼭 지정한 문자 수만큼 들어가지 않아도 된다.
char v[4] 일시 문자배열은 네 문자가 꼭 들어가야 하지만 문자열은 널문자 포함 그보다 적다면 아무거나 가능
- 문자열 입력과 출력
입력 시 )
문자배열 - 일일히 입력하거나 for문 써서 입력한다.
문자열 - cin >> v;
출력 시 )
문자배열 - 일일히 입력하거나 for문 써서 입력한다.
문자열 - cout >> v; (자동으로 널문자 전까지 출력)
주의 ) 문자열 널문자 뒤엔 쓰레기값이 들어간다
ex) char v[10]; 라고 하고 ABC를 넣는다
그렇다면 v[0] = 'A'; v[1] = 'B'; v[2] = 'C'; v[3] = '\0' v[4] = ? ...... 로 뜬다
즉 v[4] 부터 쓰레기값이 들어가기 시작함
쓰레기값을 읽으면 리눅스에서는 에러가 날 수 있다
< 쓰레기값 안들어가게 하는법 >
초기화를 먼저 한다 - 문자를 제외한 공간은 모두 널문자 처리된다
ex)
char v[4] = "abc";
char v[4] = { 0 }; or char v[4] = "";
참고) 만약 배열의 크기를 지정하지 않으면 문자열의 개수를 셀 필요없이 맞추어 설정된다.
ex) char v[] = "abc"; 일시 자동으로 쓰레기값없이 딱 맞게 설정된다
- 문자열 길이를 구하는 방법 - 널문자를 활용한다 ( 문장의 바로뒤 널문자까지가 문장의 길이 )
문자열길이 ex) "ABCD"의 문자열길이 4
문자길이 구하는 변수를 만든다 > int len = 0;
for문을 돌려 배열이 널문자와 일치하는 순간이 문자열의 길이다
주의 ) for문안에서 문자열길이 구할때 꼭 break를 해주어야함! 하지않으면 에러난다
문제) 문자열에 입력후 길이를 구하라
* 출력 시 널문자가 출력되지않게 하는것이 좋다 - 초기화를 하고 난 이후에도 문자열길이를 구해서 for문 돌리는 이유
*널문자는 출력시 공란으로 출력된다 ( " " 아니고 "" - 띄어쓰기없다)