문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
이 문제에서 알아둬야할 것은 getline
과 eof
이다. 기존에 입력받을 때 scanf나 cin으로 입력을 받았다. 이에 대한 문제점은 공백을 입력시 끊긴다는 것이다. 하지만 getline
은 공백까지 입력받을 수 있다. eof
는 파일이 종료될때까지 입력받는다는 의미이다.
#include <string>
#include <iostream>
using namespace std;
int main()
{
string str;
while (getline(cin, str) && !cin.eof()){
int arr[4] = { 0, };
for (int i = 0 ; i < str.length() ; i++){
if (islower(str[i]))
arr[0]++;
else if (isupper(str[i]))
arr[1]++;
else if (str[i] >= '0' && str[i] <= '9')
arr[2]++;
else
arr[3]++;
}
for (int i = 0 ; i<4;i++){
cout << arr[i] << ' ';
}
}
return (0);
}