Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 문자열의 대·소문자를 반대로 변환하는 방법

임의의 길이를 가진 문자열이 주어졌을 때, 문자열에 포함된 대문자는 소문자로, 소문자는 대문자로 변환하는 것이 이번 글의 목표입니다.

예시

입력 − 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?