将 'std::string {aka std::basic_string<char>}' 分配给的类型不兼容

incompatible types in assignment of 'std::string {aka std::basic_string<char>}' to

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]}'

排队

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 的数组分配给我们的地图。

注意:数组索引范围是nn-1。你不能这样做:

m_msg_int[my_string] = arrId[2];

因为arrId有2个元素,但是索引2表示第三个元素。