请教前辈关于memcmp()的一个疑惑,太奇怪了
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
string a = "aaa";
string b = "bbb";
cout << memcmp(&a, &b, a.size()) << endl;
system("pause");
return 1;
}
输出结果是0,但是a和b不相等不应当输出0啊?真是迷惑了…………
真心向大家请教,谢谢。
[解决办法]
memcmp是C运行库中的内存块内容比较函数,你用它比较STL库中的字符串,本来就不对。&a,&b只是经过模板包装了的string对象的指针,并非他的内容指针,你用a.c_str()替代试试;另外进行字符串内容比较,可用string中的compare进行。
[解决办法]
你在比较箱子而不是比较箱子里的内容。
[解决办法]
string是对象不是数组。
[解决办法]
memcmp可以比较任何内存中的数据,也可以用来比较对象,前提是你的很清楚对象的内部构造,否则很难确认比较结果的正确性,在使用上memcmp多数用来比较连续存储的内存块。