首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问前辈关于memcmp()的一个疑惑,太奇怪了

2013-01-21 
请教前辈关于memcmp()的一个疑惑,太奇怪了#include string#include cstdlib#include iostreamusing

请教前辈关于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多数用来比较连续存储的内存块。

热点排行