string.empty 和 string\[0\] == '\\0' 之间的区别

新手上路,请多包涵

假设我们有一个字符串

std::string str; // some value is assigned

str.empty()str[0] == '\0' 有什么区别?

原文由 Pro Account 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

C++11 及更高版本

string_variable[0] 如果字符串为空则需要返回空字符。这样就没有未定义的行为,如果字符串真的为空,比较仍然有效。但是,您 可以 有一个以空字符 ( "\0Hi there" ) 开头的字符串,它返回 true 即使它不为空。如果您真的想知道它是否为空,请使用 empty()


C++11 之前

不同之处在于,如果字符串为空,则 string_variable[0] 具有未定义的行为;除非字符串是 const ,否则没有索引 0。如果字符串 const 合格,那么它将返回一个空字符。

string_variable.empty() 另一方面,如果字符串为空则返回 true,否则返回 false;行为不会是未定义的。


概括

empty() 用于检查字符串/容器是否为空。它适用于所有提供它的容器并使用 empty 清楚地说明了您的意图 - 这对阅读您的代码的人(包括您)来说意义重大。

原文由 NathanOliver 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题