gpt4 book ai didi

c++ - 向 'std::string {aka std::basic_string}'分配不兼容的类型

转载 作者:行者123 更新时间:2023-12-01 14:43:47 25 4
gpt4 key购买 nike

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;
}

关于c++ - 向 'std::string {aka std::basic_string<char>}'分配不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59437714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com