调用空字符串的c_str

Calling c_str of empty string

本文关键字:str 字符串 调用      更新时间:2023-10-16

这个代码片段是OK的还是会导致未定义的行为?

std::string s;
assert(strlen(s.c_str())==0);

如果不是未定义的行为,上面的断言会通过吗?

定义得很好,断言通过了。c_str()函数将始终返回一个有效的以零结尾的C字符串。

通常使用empty()来测试空字符串

是的,它将工作(如果您将()附加到c_str以使其实际调用函数)并且断言将通过

这是一个编译错误(如果您启用了断言),因为const char *(std::string::*)()不能隐式地转换为const char *

(半开玩笑)