Tôi đã biên dịch mã sau đây với g++
và nhận đầu ra, được viết trong phần bình luận.type_info.name có thể đọc được của con người()
template<class T>
void foo(T t) { cout << typeid(t).name() << endl; }
int main() {
foo("f"); //emits "PKc"
foo(string()); //emits "Ss"
}
Tôi biết, rằng type_info.name()
không được xếp hạng, nhưng có cách nào để nhận kết quả có thể đọc được không?
giống như sau sẽ là tốt enought
const char *
class string
Trừ khi ai đó biết một bản cập nhật cho tiêu chuẩn tôi không biết, 'typeid' được thực hiện được xác định, và như vậy cũng là những giá trị nó trả về. Nếu điều này không còn là trường hợp tôi rất tò mò muốn biết thêm về nó là tốt. Cho đến lúc đó, thuật toán mangling cụ thể cho trình biên dịch của bạn có thể sẽ dẫn bạn đến câu trả lời (và demangling) mà bạn đang tìm kiếm. – WhozCraig
Hoàn toàn phụ thuộc vào việc triển khai. Cl của Microsoft sẽ sử dụng tên tương tự như những gì bạn đang mong đợi. – oldrinb
http://stackoverflow.com/questions/81870/is-it-possible-to-print-a-variables-type-in-standard-c –