changeme(我本楚狂人)回复于 2004-07-05 00:10:17 得分 0
size_type实际上是做为解决string类设计上的严重失误而引入的。
size_type是在string类内定义的一个无符号整形类型,由于string类里很多方法的返回值都是size_type类型的,所以必须使用size_type进行类型声明。
如下:
由于npos为find返回的特殊值(-1),而不幸的是,size_type类型为unsigned int,所以不同的编译器对npos的理解不同。
试想一下,用8字节来unsigned int 来表示-1和用4字节表示,值是完全不同的。
这可能是string类设计时的一个致命缺陷,为了兼容和可移植性,
特定义size_type类型,在不同编译器中,size_type的解释也不同,这样就做到了可移植。
以上内容可见
STL:11.2.12节:数值npos的意义。