C++에서 문자열의 모든 소문자를 대문자로 변환하는 프로그램을 소개합니다. 이 방법은 ASCII 코드 값을 활용하여 간단하게 구현할 수 있습니다.
예제 코드
#include<iostream>
#include<string.h>
using namespace std;
int main() {
char s[30] = "This_is_string";
int i;
for(i=0;i<=strlen(s);i++) {
if(s[i]>=97 && s[i]<=122) {
s[i]=s[i]-32;
}
}
cout<<"The String in Uppercase = "<<s;
return 0;
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
The String in Uppercase = THIS_IS_STRING
코드 설명
이 프로그램에서 문자열을 대문자로 변환하는 핵심 로직은 main() 함수 안에 구현되어 있습니다. 먼저 char 타입의 배열 s[30]을 선언하여 변환할 문자열을 저장합니다.
그다음 for 반복문을 사용해 문자열의 각 문자를 하나씩 검사하고, if 조건문으로 해당 문자가 소문자인지 확인합니다. ASCII 코드에서 소문자 'a'는 97, 'z'는 122에 해당하므로, 문자의 값이 이 범위에 있으면 32를 빼서 대문자로 변환합니다. 대문자 'A'는 65이고 소문자 'a'는 97이기 때문에 두 값의 차이인 32만큼 빼주면 됩니다.
for(i=0;i<=strlen(s);i++) {
if(s[i]>=97 && s[i]<=122) {
s[i]=s[i]-32;
}
}참고: toupper() 함수 활용하기
ASCII 값을 직접 계산하는 방법 외에도, C 표준 라이브러리에서 제공하는 toupper() 함수를 사용하면 더욱 간결하게 변환할 수 있습니다.
#include<iostream>
#include<cctype>
using namespace std;
int main() {
char s[30] = "This_is_string";
int i;
for(i=0;s[i]!='\0';i++) {
s[i] = toupper(s[i]);
}
cout<<"The String in Uppercase = "<<s;
return 0;
}toupper() 함수는 <cctype> 헤더에 정의되어 있으며, 소문자를 대문자로 자동 변환해 줍니다. 이미 대문자이거나 알파벳이 아닌 문자는 그대로 반환되므로 별도의 범위 검사가 필요 없다는 장점이 있습니다.