C++

문자열(string) 기초

영카이브 2022. 6. 12. 17:19
  • 문자열이란?

문자배열과의 차이점 (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문 돌리는 이유

*널문자는 출력시 공란으로 출력된다 ( " " 아니고   ""  - 띄어쓰기없다)