목적
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