이번 문제는 문자열을 입력받는데,
그 문자열에서 영어를 제외한 문자는 지우고, 대문자는 소문자로 바꿔주는 프로그램입니다.
#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학기 객체지향 프로그래밍 과제 문제입니다.
1-6 체크섬을 구하는 문제 (0) | 2021.07.09 |
---|---|
1-5 반복되는 문자 압축 후, 압축된 수만큼 출력 (0) | 2021.07.08 |
1-3 난수 생성 후 오름차순 정렬 (0) | 2021.07.08 |
1-2 방향을 입력받고 해당 방향으로 더하는 배열 (0) | 2021.07.08 |
1-1 1부터 50까지 정수를 입력받아 그 수만큼 피보나치 합 구하기 (0) | 2021.07.05 |
댓글 영역