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

C++로 문자열에서 알파벳 외의 모든 문자 제거하기

문자열이란?

문자열(string)은 널 문자('\0')로 종료되는 1차원 문자 배열입니다. 문자열에는 알파벳뿐만 아니라 숫자, 특수 기호 등 다양한 문자가 포함될 수 있습니다.

이 글에서는 문자열에서 알파벳을 제외한 나머지 문자(숫자, 특수 문자 등)를 모두 제거하는 C++ 프로그램을 소개합니다.

예제 코드

#include <iostream>
using namespace std;
int main() {
    char str[100] = "String@123!!";
    int i, j;
    cout<<"String before modification: "<<str<<endl;
    for(i = 0; str[i] != '\0'; ++i) {
        while(!( (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || str[i] == '\0') ) {
            for(j = i; str[j] != '\0'; ++j) {
                str[j] = str[j+1];
            }
        }
    }
    cout<<"String after modification: "<<str;
    return 0;
}

실행 결과

String before modification: String@123!!
String after modification: String

코드 동작 원리

위 프로그램에서는 바깥쪽 for 루프를 통해 문자열을 한 문자씩 검사합니다. 만약 현재 문자가 알파벳('a'~'z', 'A'~'Z')도 아니고 널 문자도 아니라면, 해당 문자 오른쪽에 있는 모든 문자를 한 칸씩 왼쪽으로 이동시킵니다. 이 과정은 안쪽 for 루프에서 변수 j를 사용해 수행되며, 결과적으로 비알파벳 문자는 문자열에서 자연스럽게 제거됩니다.

핵심 로직을 담당하는 코드 조각은 다음과 같습니다.

for(i = 0; str[i] != '\0'; ++i) {
    while(!( (str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || str[i] == '\0') ) {
        for(j = i; str[j] != '\0'; ++j) {
            str[j] = str[j+1];
        }
    }
}

모든 수정이 완료된 후에는 최종 문자열을 화면에 출력하여 확인할 수 있습니다.

cout<<"String after modification: "<<str;

참고: isalpha() 함수 활용하기

조건식을 직접 작성하는 대신, <cctype> 헤더에 포함된 표준 함수 isalpha()를 사용하면 코드를 더 간결하고 가독성 있게 만들 수 있습니다. isalpha(str[i])는 해당 문자가 알파벳일 때 참(true)을 반환하므로, 위의 복잡한 조건문을 대체할 수 있습니다.