Dolphins의 HelloWorld

한줄씩 입력받기 본문

Algorithm/알고리즘 개념

한줄씩 입력받기

돌핀's 2018. 6. 25. 19:29

String관련 알고리즘 문제를 풀 때 필요한 개념


c++ 기준으로

우리가 입력받을 때 쓰는 cin 이라던가 scanf는 한줄씩 입력받지 못하고 띄어쓰기 앞까지 입력을 받게된다. 하지만 입력을 받을 때 공백을 포함한 문자열을 입력받아야 하는 상황이 종종 일어난다.

이런 문자열을 입력받기위해 사용하는 함수를 살펴보자 


1. char arr[]에 받는 방식


char arr[10]; 이라고 선언된 문자형 배열에 문자열을 입력하고 싶으면


cin.getline(arr,10);


이런식으로 문자열을 받을 수 있다.


getline의 매개변수중 두번째 매개변수로 들어가는 숫자는 최대 글자의 갯수로 그 숫자보다 많이 입력을 해도 오류가 나지 않고 주어진 갯수만큼만 입력을 받게된다.


2. string arr에 받는 방식


getline(cin,arr);


이런식으로 문자열을 받을 수 있으며 장점은 문자열의 크기에 제한이 없다는 점이다.


getline으로 받을때는 공백문자를 포함하나 '\n'을 받지는 않는다는 특징이 있다.


3. scanf로 받는 방식


char arr[10]; 


이라고 선언된 배열에 '\n'을 제외한 문자열을 넣고싶을 때는


scanf("%[^\n]", &arr);


이렇게 입력을 받으면 된다. 


[^\n]의 의미는 \n을 제외한 모든 문자를 받겠다는 의미이다.


주의할 점으로는 배열에서 선언해준 공간을 넘어가면 에러가 발생하므로 충분한 공간을

주도록 해야한다.


또한 공백으로 시작하는 경우 앞의 공백을 무시하고 문자부터 입력받는 특징이 있으므

빈 줄을 입력받을 수 없음에 유의해야한다.




Comments