size_t strlen(const char *string);
size_t size() const;
size_t length() const;
size_t 实际上是unsigned int, 不能拿来直接用。
http://www.cplusplus.com/reference/string/string/
比如
string str1 = "12345678901112";
for(int i = 0; i < 10 -str1.size(); i++ )
{.....
}
在上述代码中 i < 10 - str1.size() 这个条件在这里是无效的。因为str1的长度大于10,所以 10 - str1.size() 的结果是一个很大的数。size() 的返回值是 unsigned int ,10 - str1.size() 的结果也会是unsigned int, 而不是期望的负数。这里一定要注意。
同样的string::length() , strlen()返回值不能直接拿过来直接用。