推荐使用 empty() 方法判断 std::string 是否为空,它安全且高效;2. 也可通过 length() 或 size() 判断长度是否为0,但 empty() 更直观;3. 可与 "" 比较,但性能较差;4. 不可用 c_str() 是否为 nullptr 判空,因空字符串仍返回有效指针。

在C++中,检查字符串是否为空是常见操作。主要方法取决于你使用的字符串类型,最常用的是 std::string。以下是几种常用的判空方式。
1. 使用 empty() 方法(推荐)
empty() 是判断字符串是否为空的最直接、最安全的方法。它返回一个布尔值,如果字符串长度为0则返回 true。
示例代码:
#include
#include iostream>
int main() {
std::string str;
if (str.empty()) {
std::cout
}
return 0;
}
即使字符串从未被赋值,empty() 也能安全工作,因为默认构造的 std::string 是空的。
立即学习“C++免费学习笔记(深入)”;
2. 比较长度是否为0
可以通过 length() 或 size() 方法获取字符串长度,判断是否为0。
示例:
if (str.length() == 0) {
// 字符串为空
}
// 或者
if (str.size() == 0) {
// 字符串为空
}
这种方法等价于 empty(),但 empty() 更直观且语义更清晰,通常性能也略优。
3. 与空字符串字面量比较
也可以将字符串与 "" 进行比较:
if (str == "") {
// 字符串为空
}
这种方式可行,但不如 empty() 高效,因为它涉及字符串构造和比较操作,不推荐作为首选。
4. 注意:不要用 c_str() 判断空
有人误以为可以用 c_str() 返回的指针是否为空来判断:
错误示例:
if (str.c_str() == nullptr) // ❌ 错误!std::string 的 c_str() 永远不会返回 nullptr
标准规定,即使字符串为空,c_str() 也会返回指向有效字符数组的指针(内容为 '\0'),所以不能用于判空。
基本上就这些。对于 std::string,优先使用 empty() 方法判断是否为空,简洁、高效、安全。











