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]}”的不兼容类型
答案 0 :(得分:4)
在线
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;
}
答案 1 :(得分:-1)
您将std::string
分配给std::string
的数组。
m_msg_int[my_string] = arrId;
现在,我们向地图分配std::string
数组。
注意:阵列索引范围为n
至n-1
。而且你不能这样做:
m_msg_int[my_string] = arrId[2];
因为arrId
有2个元素,但索引2
却是第三个元素。