c++stl库中string.length()和string.size()的坑
length()和size()的返回值都是size_t类型,也就是unsigned int,在遇到下面情况,会出现不符合你预想的情况:
int main()
{
string str="hello world";
if (-1 < str.length())
cout << "true";
else
cout << "false";
}
//输出为false
signed int和unsigned int运算时,会进行类型提升,signed int会提升为unsigned int,-1就变成了4294967295。
另外,string的length和size方法没有任何区别。