String类的C ++ strlen

时间:2011-04-10 22:50:55

标签: c++ string

C ++ length()方法如何适用于std::string类?感谢。

3 个答案:

答案 0 :(得分:2)

C ++的大多数字符串类都将字符串的长度保存在一个单独的成员中,因此它们的length()方法只返回缓存的值。

首先计算零终止字符串的长度很容易:从第一个元素开始并继续递增计数器,直到到达表示字符串结尾的二进制0。这正是strlen所做的。

答案 1 :(得分:2)

std::string类有几个构造函数,包括一个同时接受const char*原始C字符串和size_t长度的构造函数,另一个构造函数只接受const char*原始C串。对于前者,存储提供的长度,对于后者,通过调用strlen或通过执行等效计算来计算长度一次。调用std::string::length()const只返回先前计算的值。每次调用时都不会重新计算。

答案 2 :(得分:1)

它在大多数实现中都不起作用。只返回作弊,返回其他方法努力维护的值 hard

来自libstdc ++ string.h

///  Returns the number of characters in the string, not including any
///  null-termination.
size_type
length() const
{ return _M_rep()->_M_length; }

顺便说一句,在Java中也会发生同样的事情。显然length()方法是习惯性的骗子......