c ++ std :: string'=='运算符和Compare方法返回Not equal value to equal string

时间:2016-07-10 07:44:35

标签: c++ string return std

enter image description here

motion->bone_frames[0].name == model->bones[0].bone_name//it return 0 . it should be 1

motion->bone_frames[0].name.Compare(model->bones[0].bone_name)//it return 1 . it should be 0

wcscmp(motion->bone_frames[0].name.c_str(), model->bones[0].bone_name.c_str()) //it return 0  it should be 0 correct

我无法理解std :: string比较函数为什么wcscmp会产生不同的结果。

我能知道为什么这些结果有所不同吗? 它的长度是不同的原因吗?

3 个答案:

答案 0 :(得分:5)

因为他们不平等。检查您附加的图片中字符串的大小。在第一个字符串末尾有'\0',也是字符。

答案 1 :(得分:3)

wcscmp在点击L'\0'时停止比较。 std::wstring会考虑字符串的size()

字符串==compare将返回"不同的"结果为第一个返回true,第二个返回0表示相等的字符串。见Differences between C++ string == and compare()?

答案 2 :(得分:0)

标准运算符==返回lhs.compare(rhs) == 0