iscntrl() 함수란?
C++의 iscntrl() 함수는 전달된 문자가 제어 문자(control character)인지 여부를 검사하는 함수입니다. 이 함수는 ctype.h(C++에서는 cctype) 헤더 파일에 정의되어 있으며, 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r)처럼 화면에 출력되지 않고 장치나 데이터 흐름을 제어하는 데 사용되는 문자를 식별할 때 유용합니다.
검사 대상 문자가 제어 문자이면 0이 아닌 값(true)을 반환하고, 그렇지 않으면 0(false)을 반환합니다.
함수 구문
int iscntrl ( int ch );
여기서 ch는 검사하려는 문자입니다.
예제 1: 문자열 속 제어 문자 개수 세기
다음 프로그램은 iscntrl() 함수를 활용해 문자열에 포함된 제어 문자의 개수를 세는 예제입니다.
코드
#include <iostream>
#include <ctype.h>
using namespace std;
int main() {
char str[] = "Coding\tis\tfun\n";
int i, count = 0;
for(i=0; str[i]!='\0';i++) {
if(iscntrl(str[i]))
count++;
}
cout<<"Number of control characters in the string are "<<count;
return 0;
}실행 결과
Number of control characters in the string are 3
코드 설명
위 프로그램에서는 먼저 문자열 "Coding\tis\tfun\n"을 정의합니다. 이 문자열에는 탭 문자 2개와 줄바꿈 문자 1개, 총 3개의 제어 문자가 포함되어 있습니다.
이후 for 루프를 사용해 문자열의 각 문자를 하나씩 검사하며, iscntrl() 함수가 해당 문자를 제어 문자로 판별하면 count 변수를 1씩 증가시킵니다. 마지막으로 count 값을 화면에 출력합니다. 해당 로직은 다음 코드 조각과 같습니다.
char str[] = "Coding\tis\tfun\n";
int i, count = 0;
for(i=0; str[i]!='\0';i++) {
if(iscntrl(str[i]))
count++;
}
cout<<"Number of control characters in the string are "<<count;예제 2: 특정 문자가 제어 문자인지 확인하기
다음은 iscntrl() 함수를 사용해 주어진 문자가 제어 문자인지 아닌지를 판별하는 또 다른 예제입니다.
코드
#include <iostream>
#include <ctype.h>
using namespace std;
int main() {
char ch1 = 'A';
char ch2 = '\n';
if(iscntrl(ch1))
cout<<"ch1 is a control character"<<endl;
else
cout<<"ch1 is not a control character"<<endl;
if(iscntrl(ch2))
cout<<"ch2 is a control character"<<endl;
else
cout<<"ch2 is not a control character"<<endl;
return 0;
}실행 결과
ch1 is not a control character ch2 is a control character
코드 설명
위 프로그램에서는 두 개의 문자 변수 ch1('A')과 ch2('\n')를 정의한 뒤, iscntrl() 함수로 각각이 제어 문자인지 검사합니다. 일반 영문자 'A'는 제어 문자가 아니므로 false가 반환되고, 줄바꿈 문자 '\n'은 제어 문자이므로 true가 반환됩니다. 관련 코드는 다음과 같습니다.
char ch1 = 'A'; char ch2 = '\n'; if(iscntrl(ch1)) cout<<"ch1 is a control character"<<endl; else cout<<"ch1 is not a control character"<<endl; if(iscntrl(ch2)) cout<<"ch2 is a control character"<<endl; else cout<<"ch2 is not a control character"<<endl;
정리
iscntrl() 함수는 C++에서 특정 문자가 제어 문자인지 빠르게 확인할 수 있는 표준 라이브러리 함수입니다. 입력 데이터 검증이나 텍스트 처리 과정에서 출력 불가능한 문자를 걸러내는 용도로 널리 활용됩니다. 참고로 최신 C++ 코드에서는 <cctype> 헤더를 포함하는 것이 권장됩니다.