【发布时间】:2014-05-17 03:52:58
【问题描述】:
我正在尝试比较 libpqxx c_str 的值。
如果我尝试直接比较它们,例如result1[0][0].c_str() == result2[0][0].c_str(),当它们具有相同的字符串值时,它们不会return true。正确比较它们的唯一方法是使用strcmp。
但是,如果我将 libpqxx c_str 与 std::string 与 strcmp 进行比较,编译器会抱怨 strcmp 的参数不能是 std::string,但对我来说最奇怪的是:如果我比较像result1[0][0].c_str() == some_std_string 这样的东西,如果它们具有相同的值,则比较将return true,否则比较false。
这是为什么?这是 libpqxx 特有的东西吗?如果不是,这是标准行为吗?
【问题讨论】:
-
result1[0][0].c_str() == result2[0][0].c_str()是的,这是两个不同的指针。 -
@Gracchus,值得注意的是,即使
string没有用于 char 指针的operator==,仅仅一个事实const char*可以隐式地变成string意味着无论如何它都会起作用。看到不存在operator==,编译器将寻找一种方法将const char*隐式转换为string,并找到接受单个const char*的非explicit字符串构造函数,并使用它。
标签: c++ string equality libpqxx c-str