{"error":"forbidden","reason":"CSRF Cookie/Header mismatch"}
这是我的代码。
我在班级function(head, req) {
var id = req.query.id;
var contactName = 'This is the new contact name!!';
var sendString = '{"PrimaryContactName":"' + contactName + '"}';
var xhr = new XMLHttpRequest();
xhr.open('PUT", <URL>, false);
xhr.send(sendString);
var sendStatus = xhr.status;
}
的函数class A
{
public:
map<string, string> strs; // it's initialized in a function
map<const char *, string> myMap;
virtual void setMyMap()
{
myMap.insert({str.begin()->first.c_str(), "aaa"});
}
};
class B : public class A
{};
class C : public class B
{
virtual void setMyMap()
{
B::setMyMap();
for (auto it = myMap.begin(); it != myMap.end(); ++it)
{
cout << it->first << std::endl; // "a"
}
cout<<(myMap.find("a") == myMap.end()); // 1
myMap.find("a")->first; // get the error
}
};
中收到错误map/set iterator not dereferencable
我收到此错误是因为setMyMap
是C
但我不知道为什么。令我惊讶的是,我只是在同一个函数中打印这个地图,我可以看到这张地图的所有myMap.find("a") == myMap.end()
。在这里,我可以看到true
。我真的不知道为什么我试图找到相同的first
但失败了。 a
肯定在地图中。否则我无法使用first
打印它。
答案 0 :(得分:0)
const char *
作为键的地图不会比较字符串,只会比较指针地址。不同地址的两个字符串"a"
不会相等。您必须使用std::string
或自定义比较功能。不要对字符串文字的地址做出假设。