将 '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
的数组分配给我们的地图。
注意:数组索引范围是n
到n-1
。你不能这样做:
m_msg_int[my_string] = arrId[2];
因为arrId
有2个元素,但是索引2
表示第三个元素。
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
的数组分配给我们的地图。
注意:数组索引范围是n
到n-1
。你不能这样做:
m_msg_int[my_string] = arrId[2];
因为arrId
有2个元素,但是索引2
表示第三个元素。