과제
1-4 영어만 출력하고 대문자는 소문자로 바꾸기
근성
2021. 7. 8. 09:25
이번 문제는 문자열을 입력받는데,
그 문자열에서 영어를 제외한 문자는 지우고, 대문자는 소문자로 바꿔주는 프로그램입니다.
#include<iostream>
#include<string>//문자열 함수 사용
using namespace std;
int main()
{
string MyString;//문자열 선언
getline(cin, MyString);//문자열 입력
for (int index = 0; index < MyString.size(); index++)
{
if (MyString[index] >= 'A' && MyString[index] <= 'Z')
MyString[index] += 32;//대문자일 경우에 아스키코드값을 이용해 소문자 전환
else if (MyString[index] < 'a' || MyString[index] > 'z')//소문자가 아닌경우에 erase로 제거
{
MyString.erase(MyString.begin() + index);
index--;//제거 될 경우에는 인덱스도 줄여줌
}
}
cout << MyString<<endl;
}
이번 문제는 string함수와 ASCII코드 개념으로 문제를 해결했습니다.
대문자인 경우는 32를 더해서 소문자로 바꿔주었습니다.(A=65, a=97)
영어가 아닌 다른 문자인 경우에는 erase함수를 이용해서 제거해주고, 제거될 경우 index도 줄여줍니다.
1학년일 때는 string함수를 많이 써보지는 못하였는데, 2학년이 되고 나서 string함수를 써보니 신기한 함수들이 정말 많았습니다. 나중에 string함수의 키워드를 알아가는 글을 써보겠습니다.
#이 문제의 출처는 kw대학교 컴퓨터정보공학부 2021년 1학기 객체지향 프로그래밍 과제 문제입니다.