std::map.operator[] 不适用于全球地图

std::map.operator[] not working with global maps

谁能告诉我如何利用 std::map.operator[] 来获取 const std::map 的值?

例如:

file.h

#ifndef _FILE_H
#define _FILE_H
#include <map>
#include <string>
const std::map<std::string,std::string> STRINGS= {
    {"COMPANY","MyCo"}
    ,{"YEAR","2022"}
};
#endif

file.cpp

#include "cpp_playground.h"
#include <iostream>
int main (void){
    std::cout<< "Code by "<< STRINGS["COMPANY"] << " " << STRINGS["YEAR"] << std::endl;
}

在 Visual Studio 2015 中出现此错误,但我无法解释它

Severity    Code    Description Project File    Line    Suppression State
Error   C2678   binary '[': no operator found which takes a left-hand operand of type 'const std::map<std::string,std::string,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' (or there is no acceptable conversion)    cpp_playground  d:\user\documents\visual studio 2015\projects\cpp_playground\cpp_playground.cpp 10  

std::map 中的 operator[] 定义为 return 对具有给定键的对象的引用 - 或者创建它,如果它不存在,这会修改映射,这就是为什么它不是 const 方法的原因。该运算符没有 const 版本,这就是您收到显示错误的原因。

使用std::map's at(...) function for access-only. Note that it throws a std::out_of_range exception if the given key is not contained in the map; in C++20 or later you can use contains()检查给定键是否存在。