无意间发现这个问题:string.find()返回值,如果返回给一个int或long int类型,则返回值为-1;
若返回一个string::size_type类型值则返回2^32-1;
原因:string.find()返回值类型为string::size_type,其实是unsigned int类型。so,比较无符号整型2^32-1与整型-1的补码会发现他们是相同的:111111111111111111111111111,对应整型数2进制为:1000……001,即-1。
简言之,就是进行了一次由unsigned int 到int 的强制类型转换。