임의의 길이를 가진 문자열이 주어졌을 때, 문자열에 포함된 대문자는 소문자로, 소문자는 대문자로 변환하는 것이 이번 글의 목표입니다.
예시
입력 − string str = "Welcome To The Site!"
출력 − wELCOME tO tHE sITE!
설명 − W, T, T, S는 소문자로 변환되고, e, l, c, o, m, e, o, i, t, e는 대문자로 변환됩니다. 특수 문자(!)에는 어떠한 연산도 수행되지 않습니다.
입력 − string str = "HELLO"
출력 − hello
설명 − H, E, L, L, E가 모두 소문자로 변환됩니다.
두 가지 접근 방식
C++ 표준 라이브러리(<cctype>)에서 제공하는 내장 함수인 tolower(char)와 toupper(char)를 활용하여 변환하는 방법
ASCII 값을 이용한 로직을 직접 구현하여 변환하는 방법
프로그램에 적용된 접근 방식
임의의 길이를 가진 문자열을 입력받습니다.
length() 함수를 사용하여 문자열의 길이를 계산합니다. 이 함수는 공백을 포함한 문자열 전체의 문자 수에 해당하는 정수 값을 반환합니다.
대문자 [A-Z]의 ASCII 값은 65부터 90까지이며, 소문자 [a-z]의 ASCII 값은 97부터 122까지입니다.
반복문을 실행하여 문자열의 각 문자를 비교합니다. 해당 문자가 대문자라면 32를 더해 소문자로 변환하고, 소문자라면 32를 빼서 대문자로 변환합니다.
변환이 완료된 문자열을 출력합니다.
예제 코드
#include<iostream>
using namespace std;
void Convert_case(string &str){
// 문자열의 길이 계산
int len = str.length();
// 소문자를 대문자로, 대문자를 소문자로 변환
for (int i=0; i<len; i++){
if (str[i]>='a' && str[i]<='z'){
str[i] = str[i] - 32;
}
else if(str[i]>='A' && str[i]<='Z'){
str[i] = str[i] + 32;
}
}
}
int main(){
string str = "What's Your Name?";
cout<<"변환 전 문자열: "<<str;
Convert_case(str);
cout<<"\n변환 후 문자열: "<<str;
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −
변환 전 문자열 − What's Your Name? 변환 후 문자열 − wHAT'S yOUR nAME?