상세 컨텐츠

본문 제목

1-4 영어만 출력하고 대문자는 소문자로 바꾸기

과제

by 근성 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학기 객체지향 프로그래밍 과제 문제입니다.

관련글 더보기

댓글 영역