我试图以这种方式将std :: string与""
进行比较:
std::string str = "ooo";
bool a = str.compare("") == 0; // marked line
在标记的行上,我在compare
函数上遇到异常。
请问我该如何处理?
非常感谢!
答案 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::size
或std::string::length
代替。这两种方法是同义词。
bool a = !str.size(); /*note the implicit cast to bool*/
size
是首选,因为它与其他容器对象更加对称。
(你也可以使用str.empty()
但是,我个人不喜欢它,因为方法名称听起来太像它会修改字符串。我不想在凌晨4点的调试会话中被愚弄。