C++/기초

[기초] 대소문자 변환 - 문자열 / C++

sillon 2023. 5. 3. 14:30
728x90
반응형

C++에서 대소문자 변환하는 방법

1. C++ 내장 함수 사용

C++에는 toupper와 tolower라는 내장 함수가 있어 대소문자 변환을 쉽게 할 수 있습니다. 

각 함수는 아래와 같은 형태를 갖습니다.

int toupper(int c);
int tolower(int c);

위 함수들은 인자로 받은 문자 c가 대소문자이면 대문자나 소문자로 변환한 값을 반환하며, 그렇지 않으면 c를 그대로 반환합니다. 예를 들어, 아래 코드는 문자열 str에서 모든 소문자를 대문자로 변환합니다.

 

#include <algorithm>
#include <cctype>
#include <string>

using namespace std;

int main() {
    string str = "Hello, World!";
    transform(str.begin(), str.end(), str.begin(), [](unsigned char c) { return toupper(c); });
    return 0;
}

C++에서 std::transform() 함수를 사용하려면 <algorithm> 헤더 파일이 필요합니다. std::transform() 함수는 입력 범위의 요소들을 다른 값을 가진 출력 범위로 변환하는 데 사용됩니다.

예를 들어, std::transform() 함수를 사용하여 벡터 v의 모든 요소를 대문자에서 소문자로 변환할 수 있습니다. 이를 위해 <algorithm> 헤더 파일과 <cctype> 헤더 파일을 포함해야 합니다.

 

2. ASCII 코드 사용


ASCII 코드는 대문자와 소문자의 차이가 정확히 32입니다. 따라서 문자열에서 대소문자를 변환할 때, 문자의 ASCII 코드에 32를 더하거나 뺌으로써 변환할 수 있습니다. 아래 코드는 문자열 str에서 모든 대문자를 소문자로, 소문자를 대문자로 변환합니다.

 

#include <string>

using namespace std;

int main() {
    string str = "Hello, World!";
    for (auto& c : str) {
        if (c >= 'a' && c <= 'z') {
            c = c - 'a' + 'A'; // 소문자를 대문자로
        } else if (c >= 'A' && c <= 'Z') {
            c = c - 'A' + 'a'; // 대문자를 소문자로
        }
    }
    return 0;
}

 

728x90
반응형