Dolphins의 HelloWorld
한줄씩 입력받기 본문
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을 제외한 모든 문자를 받겠다는 의미이다.
주의할 점으로는 배열에서 선언해준 공간을 넘어가면 에러가 발생하므로 충분한 공간을
주도록 해야한다.
또한 공백으로 시작하는 경우 앞의 공백을 무시하고 문자부터 입력받는 특징이 있으므로
빈 줄을 입력받을 수 없음에 유의해야한다.
'Algorithm > 알고리즘 개념' 카테고리의 다른 글
에라토스테네스의 체 (1 에서 N까지의 모든 소수 구하기), 골드바흐의 추측 (0) | 2018.08.10 |
---|---|
최대공약수와 최소공배수 (0) | 2018.08.09 |
Dynamic Programming(LIS)(Baekjoon11722) (0) | 2018.08.02 |
priority_queue 사용법 (0) | 2018.07.04 |
Stack (0) | 2018.06.25 |