인프런 커뮤니티 질문&답변

@k1m2njun님의 프로필 이미지
@k1m2njun

작성한 질문수

홍정모의 따라하며 배우는 C++

4.5 형변환 Type conversion

1:52 typeid() 리터럴의 데이터타입 출력

해결된 질문

작성

·

471

1

저 같은 경우 한 글자만 출력이 되는데,

예를 들어 Int는 i

이 부분을 바꿀 수 있나요 ? 코드는 아래와 같습니다.

#include <iostream>
#include <typeinfo>

int main()
{
    using namespace std;
    
    int a = 123;
    cout << typeid(a).name() << endl;

    return 0;
}

답변 1

1

혹시 gcc나 g++를 사용하고 계신 것은 아닌지 생각이 드는데요,

그 경우 아래와 같이 실행해보세요.

./a.out | c++filt --types

 

가령 아래의 코드를 그냥 빌드하여 실행하면

// type_info::name example
#include <iostream>       // std::cout
#include <typeinfo>       // operator typeid

int main() {
  int i;
  int * pi;
  std::cout << "int is: " << typeid(int).name() << '\n';
  std::cout << "  i is: " << typeid(i).name() << '\n';
  std::cout << " pi is: " << typeid(pi).name() << '\n';
  std::cout << "*pi is: " << typeid(*pi).name() << '\n';

  return 0;
}

 

결과는 아래와 같지만

$ ./a.out
int is: i
  i is: i
 pi is: Pi
*pi is: i

 

아래와 같이 실행하면 타입의 전체 이름이 나오게 됩니다.

$ ./a.out | c++filt --types
int is: int
  int is: int
 pi is: int*
*pi is: int

 

https://sourceware.org/binutils/docs/binutils/c_002b_002bfilt.html#:%7E:text=The%20c%2B%2Bfilt%201,that%20they%20can%20be%20read.&text=If%20the%20name%20decodes%20into,the%20original%20word%20is%20output.

@k1m2njun님의 프로필 이미지
@k1m2njun

작성한 질문수

질문하기