如何将const字符串值放在map中

Bhu*_*ant 4 c++ stl

我想创建一张地图,

std::map <MESSAGE_CATEGORY, const std::string> m_mapResponseDesc;

operator[]用来在地图中追加一个值:

m_mapResponseDesc[STATUS_LIMIT] = "Limit has been exceeded";
Run Code Online (Sandbox Code Playgroud)

STATUS_LIMIT是类型的enum.

我收到错误:

错误C2678:binary'=':找不到运算符,它接受类型为'const std :: basic_string <_Elem,_Traits,_Ax>'的左手操作数(或者没有可接受的转换)

请指出我做了什么错误.我没有得到任何线索.

Cha*_*had 10

由于operator[]返回引用(对a const std::string),您将需要使用该insert()方法.

#include <map>
#include <string>
using namespace std;

int main()
{
   std::map<int, const std::string> m;
   m.insert(std::make_pair(1, "Hello"));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++ 11更新:

您现在可以更轻松地完成此操作:

std::map<int, const std::string> status = {
        {200, "OK"},
        {404, "Not Found"}
    };
Run Code Online (Sandbox Code Playgroud)