영어 입력을 받을 때 가끔 대소문자로 변환이 필요할 경우가 있다. 그런 경우 c++에서는 아스키코드 값으로 변경하는 방법과 tolower, toupper 방법으로 대문자를 소문자로 소문자는 대문자로 변경이 가능하다.
아스키코드값으로 대소문자 변환
아스키코드 값은 대문자A는 65이며 대문자 Z는 90이며, 소문자 a는 97이고 소문자 z는 122이다.
대소문자 아스키코드 값 차이는 32이다. 그말은 즉슨 대문자에서 소문자로 변환 할때는 32를 더해주고 소문자에서 대문자로 변환할때는 32를 빼주면 된다.
#include <iostream>
int main()
{
std::string strA = "";
std::cout << "문자를 입력해 주세요 : ";
std::cin >> strA;
std::cout << "변환 전 : "
<< strA << std::endl;
for (int i = 0; i < strA.size(); i++)
{
if (strA[i] >= 'A' &&
strA[i] <= 'Z')
{
strA[i] += 32;
}
else if (strA[i] >= 'a' &&
strA[i] <= 'z')
{
strA[i] -= 32;
}
}
std::cout << "변환 후 : "
<< strA << std::endl;
}
위 소스는 아스키 코드 값으로 대소문자 변환해주는 소스이다.
for문으로 입력된 값의 size를 가져와 if문에서 대문자인지 소문자인지 구분 후 변환을 해준다.
위의 소스 결과 값이다. 입력한 ASD의 대문자가 소문자로 변환된것을 확인할수 있다.
tolower, toupper으로 대소문자 변환
tolower는 대문자에서 소문자를 변환해주며, toupper는 소문자에서 대문자로 변환해주는 함수이다.
#include <iostream>
int main()
{
std::string strA = "";
std::cout << "문자를 입력해 주세요 : ";
std::cin >> strA;
std::cout << "변환 전 : "
<< strA << std::endl;
for (int i = 0; i < strA.size(); i++)
{
if (strA[i] >= 'A' &&
strA[i] <= 'Z')
{
strA[i] = tolower(strA[i]);
}
else if (strA[i] >= 'a' &&
strA[i] <= 'z')
{
strA[i] = toupper(strA[i]);
}
}
std::cout << "변환 후 : "
<< strA << std::endl;
}
위 소스는 tolower함수와 toupper함수로 대소문자 변환해주는 소스이다.
댓글