学习string时,对于string中定义的string::type_size变量很感兴趣。得知它是一个无符号整形变量。我们知道一个无符号数如果被当做有符号数可能会造成代码逻辑上的灾难。因为在计算机中,有符号数实际上通过符号位来实现,而无符号类型没有符号位。因此如果按照无符号数规则去读取一个有符号负数,那么计算机会认为它其实是一个很大的无符号正数。
int num = -10;
std::cout << (unsigned int) num << std::endl;
因此能查看变量的类型在某些时候很重要。今天我就介绍一种方法,运用typeinfo库的typeid().name()函数
#include<iostream>
#include<string>
#include<typeinfo>
#include<cctype>
int main(void)
{
std::string s = "hello";
std::cout << typeid(s.size()).name() << std::endl;
std::string::size_type a = 11;
std::cout << typeid(s.size()).name() << std::endl; //unsigned __int64
std::cin.get();
}
得到的结果在上一张图中展示了。