原因如下:
length()返回的是size_type类型,查了一下msdn,size_type解释为
The unsigned integer type describes an object that can represent the length of any controlled sequence
也就是个无符号整数。问题就清楚了。
你的程序中mPos是个int,在unsigned int和int 比较时,要将int转换为unsigned int。
mPos是正数时还行,等于-1时一转换为无符号数就出错了(变成一个超级大的数了^_^)。