假设我们有一个字符串
std::string str; // some value is assigned
str.empty()
和 str[0] == '\0'
有什么区别?
原文由 Pro Account 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我们有一个字符串
std::string str; // some value is assigned
str.empty()
和 str[0] == '\0'
有什么区别?
原文由 Pro Account 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
C++11 及更高版本
string_variable[0]
如果字符串为空则需要返回空字符。这样就没有未定义的行为,如果字符串真的为空,比较仍然有效。但是,您 可以 有一个以空字符 ("\0Hi there"
) 开头的字符串,它返回true
即使它不为空。如果您真的想知道它是否为空,请使用empty()
。C++11 之前
不同之处在于,如果字符串为空,则
string_variable[0]
具有未定义的行为;除非字符串是const
,否则没有索引 0。如果字符串 是const
合格,那么它将返回一个空字符。string_variable.empty()
另一方面,如果字符串为空则返回 true,否则返回 false;行为不会是未定义的。概括
empty()
用于检查字符串/容器是否为空。它适用于所有提供它的容器并使用empty
清楚地说明了您的意图 - 这对阅读您的代码的人(包括您)来说意义重大。