[C++] typeid로 정수, 클래스, STL 등 변수의 자료형 확인

목적

C++에서 typeid를 이용하여 정수 등 변수의 자료형을 출력한다.

typeid

C++에는 typeinfo 헤더파일에 typeid가 있다. typeid와 연산자로 두 개체의 자료형이 같은지 확인할 수 있고 멤버함수 name()을 통해 단일 개체의 자료형을 확인할 수 있다.

typeid를 이용하여 두 개체의 자료형 일치 확인

구현

typeid가 포함된 typeinfo, 출력을 위한 iostream를 포함시킨다.

#include <iostream>
#include <string>
#include <typeinfo>
#include <queue>

자료형 일치를 확인하고 싶은 개체들을 선언한다.

int main() {
    int a, b;
    char c;
    ...

typeid와 연산자를 이용하여 자료형 일치 확인을 출력한다.

// 자료형 일치 확인
cout << (typeid(a) == typeid(b)) << endl; // 1
cout << (typeid(a) == typeid(c)) << endl; // 0

출력 결과

전체 코드

#include <iostream>
#include <typeinfo>

using namespace std;

int main() {
	int a, b;
	char c;

	// 자료형 일치 확인
	cout << (typeid(a) == typeid(b)) << endl; // 1
	cout << (typeid(a) == typeid(c)) << endl; // 0
}

typeid를 이용하여 단일 개체의 자료형 확인

typeid가 포함된 typeinfo, 출력을 위한 iostream를 포함시킨다.

#include <iostream>
#include <string>
#include <typeinfo>
#include <queue>

확인하고 싶은 자료형의 개체들을 선언한다.

typedef struct {}st;
class Cl {};

int main() {
    string txt;
    int i;
    st s;
    Cl c;
    queue<int>q;
    ...

멤버변수 name()을 통해 자료형을 출력한다.

cout << "string Data Type : " << typeid(txt).name() << endl; // class std::basic_string ~
cout << "int Data Type : " << typeid(i).name() << endl; // int
cout << "struct Data Type : " << typeid(s).name() << endl; // struct st
cout << "class Data Type : " << typeid(c).name() << endl; // class Cl
cout << "queue Data Type : " << typeid(q).name() << endl; // class std::queue~

출력 결과

전체코드

#include <iostream>
#include <string>
#include <typeinfo>
#include <queue>

using namespace std;

typedef struct {}st;
class Cl {};

int main() {
	string txt;
	int i;
	st s;
	Cl c;
	queue<int>q;

	// 자료형 확인
	cout << "string Data Type : " << typeid(txt).name() << endl; // class std::basic_string ~
	cout << "int Data Type : " << typeid(i).name() << endl; // int
	cout << "struct Data Type : " << typeid(s).name() << endl; // struct st
	cout << "class Data Type : " << typeid(c).name() << endl; // class Cl
	cout << "queue Data Type : " << typeid(q).name() << endl; // class std::queue~
}

참고

https://docs.microsoft.com/ko-kr/cpp/cpp/typeid-operator?view=vs-2019

Leave a Comment