为什么 C++在编写类似代码时没有隐式转换为bool
定义的容器和 STL 容器std::string
if (!x.empty()) { ... }
而不是更短
if (x) { ... }
什么时候x
是类型std::string
或例如std::vector
?
我也对std::string
(在 C++03 中)没有const char*
在 STL 示例中隐式转换为的事实感到困惑,例如
std::string s("filename");
std::ofstream(s.c_str();