- string 라이브러리의 getline()
- 원하는 구분자(delimiter)에 도달할 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장
getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자);
ex) getline(cin, str);
#include<iostream>
#include<string>
int main() {
std::string str;
std::getline(std::cin, str,'\n');
int cnt = 1; // 문자열이 공백이 아닌 단어로 바로 시작 할 경우 단어의 개수는 1부터 시작
for (int i = 0; i < str.length(); i++) {
if (str[i] == ' ')
cnt++;
}
if (str[0] == ' ') // 문자열 첫 부분에 공백이 있을 경우
cnt--;
if (str[str.length() - 1] == ' ')
cnt--;
std::cout << cnt;
}
문자열은 공백으로 시작하거나 끝날 수 있다고 했으므로, 문자열 앞에 공백이 있을 경우와 문자열 뒤에 공백이 있을 경우로 나누어 비교
ex)The Curious Case of Benjamin Button
The 가 cnt = 1 (단어 1개)
-> 공백의 개수만큼 cnt를 증가시키면 단어의 개수를 알 수 있음
공백이 5개이므로 cnt = 1에서 5번 증가 => cnt = 6
결국, 단어는 6개임을 알 수 있음
- 시작이 공백일 경우, 문자열 처음이 단어가 아니므로 cnt를 1 감소시켜줘야 함
- 끝이 공백일 경우, 배열의 크기에서 1을 뺀 위치는 문자열의 가장 마지막 문자가 공백으로, 단어가 아니므로 cnt를 1 감소시켜줘야 함
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #5622_다이얼_c++ (0) | 2021.10.26 |
---|---|
baekjoon #2908_상수_c++ (0) | 2021.10.26 |
baekjoon #1157_단어 공부_c++ (0) | 2021.10.26 |
baekjoon #10809_알파벳 찾기_c++ (0) | 2021.10.25 |
baekjoon #11720_숫자의 합_c++ (0) | 2021.10.25 |