아스키 코드
문자열의 대소문자를 변환하는 첫 번째 방법은 아스키 코드를 활용하는 것입니다 !
A ~ Z가 65 ~ 90에 해당하고,
a ~ z가 97 ~ 122에 해당해요.
문자열을 순차적으로 탐색하면서 각 아스키 코드에 따라 -32 혹은 +32를 해주면 됩니다 !
string str = "abcDEF";
for(char c : str)
{
// 대문자 변환
if(c >= 97 && c <= 122)
{
c -= 32;
}
// 소문자 변환
if(c >= 65 && c <= 90)
{
c += 32;
}
}
toupper, tolower
toupper와 tolower 메소드를 활용하는 방법도 있습니다 !
매개변수로는 char 자료형이 와야합니다 ! string 자료형을 넣어서 한 번에 변환하고 싶어도 안 됩니다 !
string str = "abcDEF";
// 대문자 변환
for(int i=0; i<str.size(); ++i)
{
str[i] = toupper(str[i]);
}
// 소문자 변환
for(int i=0; i<str.size(); ++i)
{
str[i] = tolower(str[i]);
}
Transform
Transform 메서드는 toupper와 tolower를 매개변수로 활용합니다 ! 인자 설정이 다소 복잡하지만, 코딩테스트에서 유용하게 사용할 수 있을 것 같은 느낌이 드는 메서드에요 !
#include <algorithm>
string str1 = "abcDEF";
string str2 = "Hello";
transform(str1.begin()+1, str1.end(), str2.begin()+1, ::toupper);
cout << str2; // "HBCDE"
첫 번째 인자 : 변환을 시작할 문자열의 위치
두 번째 인자 : 변환을 끝낼 문자열의 위치
세 번째 인자 : 변환한 문자열을 받을 문자열의 위치
네 번째 인자 : ::toupper, ::tolower
'코딩테스트 > 알고리듬' 카테고리의 다른 글
[코딩테스트] value 값을 기준으로 정렬 (0) | 2025.02.25 |
---|---|
[코딩테스트] 피보나치 수 (0) | 2025.02.18 |
[코딩테스트] 10진수 ↔ 2진수 변환 (0) | 2025.02.17 |
[코딩테스트] 문자열 형변환 (0) | 2025.02.12 |
[코딩테스트] Split 문자열 자르기 (0) | 2025.02.11 |