int main()
{
std::string my_string= "16657";
std::map<std::string, std::string[2]> m_msg_int;
std::string arrId[2];
arrId[0] = "ABC";
arrId[1] = "XYZ/CDE";
m_msg_int[my_string] = arrId[2];
std::cout<<"MSGID"<<msgId[0]<<endl;
}
将'std :: string {aka std :: basic_string}'分配给'std :: map,std :: basic_string [2
:: mapped_type {aka std :: basic_string [2]}'的不兼容类型]] >In line
m_msg_int[my_string] = arrId[2];
您正在访问数组arrId
,因为它的大小为2,读取arrId[2]
会导致不确定的行为,因此无法访问。即使您不会越界访问
m_msg_int[my_string]
是对字符串数组的引用和
arrId[2]
是一个字符串。可能您正在尝试分配
m_msg_int[my_string] = arrId;
但是在C ++中,您不能将基本数组分配给基本数组。您应该为此使用std :: array
#include <array>
#include <map>
#include <string>
int main()
{
std::string my_string= "16657";
std::map<std::string, std::array<std::string, 2>> m_msg_int;
std::array<std::string, 2> arrId;
arrId[0] = "ABC";
arrId[1] = "XYZ/CDE";
m_msg_int[my_string] = arrId;
//std::cout<<"MSGID"<<msgId[0]<<endl;
}
您将std::string
分配给std::string
的数组。
m_msg_int[my_string] = arrId;
现在我们将std::string
数组分配给地图。
NOTE:数组索引范围是n
至n-1
。而且你不能这样做:
m_msg_int[my_string] = arrId[2];
因为arrId
具有2个元素,但是索引2
表示第三个元素。