Полный вывод типа переменной
При использовании typeid().name() в терминале получаю сокращенный результат типа переменной, хотелось бы полный.
Код:
#include <iostream>
#include <typeinfo>
int main()
{
float s{23.2};
std::cout << typeid(s).name() << "\n";
char a{'a'};
std::cout << typeid(a).name() << "\n";
}
Результат:
$ g++ -o main main.cpp && ./main
f
c
Вместо f и c хотелось бы видеть float и char.
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Вывод typeid(...).name() является компиляторнозависимым. Если хочется красиво-красиво, самый простой способ - воспользоваться библиотекой Boost, там есть для этого библиотека type index
Где почитать - https://subscription.packtpub.com/book/application_development/9781787282247/1/01lvl1sec19/getting-a-human-readable-type-name (это примеры с книги)
#include <boost/type_index.hpp>
#include <iostream>
int main() {
auto&& x = 42;
std::cout << "x is "
<< boost::typeindex::type_id_with_cvr<decltype(x)>()
<< std::endl;
}
если это не очень подходить, сама библиотека похоже header only, так что ее можно попробовать вытянуть и использовать.