C ++ length()
方法如何适用于std::string
类?感谢。
答案 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()
方法是习惯性的骗子......