如何比较std :: string到""正常吗?

时间:2014-04-01 10:05:48

标签: c++ string

我试图以这种方式将std :: string与""进行比较:

std::string str = "ooo";
bool a = str.compare("") == 0; // marked line

在标记的行上,我在compare函数上遇到异常。

请问我该如何处理?

非常感谢!

4 个答案:

答案 0 :(得分:6)

你可以这样做:

bool a = str.empty();

答案 1 :(得分:0)

无需比较,你可以(而且应该)直接写

bool a = str == "";

答案 2 :(得分:0)

成员函数比较不会抛出异常。所以这段代码

std::string str = "ooo";
bool a = str.compare("") == 0;

虽然看起来很奇怪但是有效。

你可以写简单

bool a = str.empty();

bool a = str == "";

我认为异常的原因是在其他地方。

如果您使用某些内容

,则可能会发生异常
bool a = str.compare( 0 ) == 0;

答案 3 :(得分:0)

使用std::string::sizestd::string::length代替。这两种方法是同义词。

bool a = !str.size(); /*note the implicit cast to bool*/

size是首选,因为它与其他容器对象更加对称。

(你也可以使用str.empty()但是,我个人不喜欢它,因为方法名称听起来太像它会修改字符串。我不想在凌晨4点的调试会话中被愚弄。