gpt4 book ai didi

C++ map::find char * 与 char []

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:44 26 4
gpt4 key购买 nike

我正在使用 C++ map 在我的程序中实现字典。我的函数获取一个结构作为参数,并且应该返回基于 structure.name 成员的关联值,该成员是 char named[32]。以下代码演示了我的问题:

map <const char *, const char *> myMap;
myMap.insert(pair<const char *, const char *>("test", "myTest"));

char *p = "test";
char buf[5] = {'\0'};
strcpy(buf, "test");

cout << myMap.find(p)->second << endl; // WORKS
cout << myMap.find("test")->second << endl; // WORKS
cout << myMap.find(buf)->second << endl; // DOES NOT WORK

我不确定为什么第三种情况不起作用,我应该怎么做才能让它起作用。我调试了上面的代码以观察传递的值,但我仍然无法找出问题所在。

谢谢!

最佳答案

指针比较,而不是字符串比较,将由 map 执行以定位元素。前两个之所以有效,是因为 "test" 是一个字符串文字,并且具有相同的地址。最后一个不起作用,因为 buf"test" 的地址不同。

要修复,请使用 std::string 或为 char* 定义一个比较器。

关于C++ map::find char * 与 char [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com