C++ 比较两个向量可能会给我一个错误

C++ 比较两个向量可能会给我一个错误,c++,C++,所以这背后的想法是用户输入一条信息,然后信息被转换成摩尔斯电码。这是我今天已经做了8个多小时的家庭作业。这也是我第一次认真上课 运行时,第64行只出现一个错误。我得到的错误毫无意义(它是huuuge,所以除非被要求,否则我不想包含它)。我怀疑问题在于原始消息向量和字母代码向量是不同的向量类型(分别为string和char) #包括 #包括 #包括 使用名称空间std; 类别代码 { 私人: 矢量字母码; 矢量莫尔斯电码; 矢量原始信息; 向量最终消息; 公众: 代码(); void编码器(矢量输

所以这背后的想法是用户输入一条信息,然后信息被转换成摩尔斯电码。这是我今天已经做了8个多小时的家庭作业。这也是我第一次认真上课

运行时,第64行只出现一个错误。我得到的错误毫无意义(它是huuuge,所以除非被要求,否则我不想包含它)。我怀疑问题在于原始消息向量和字母代码向量是不同的向量类型(分别为string和char)

#包括
#包括
#包括
使用名称空间std;
类别代码
{
私人:
矢量字母码;
矢量莫尔斯电码;
矢量原始信息;
向量最终消息;
公众:
代码();
void编码器(矢量输入);
void display();
};
代码::代码():字母代码(),莫尔斯电码(28)
{
//建筑字母代码

对于(char c='A';c,请阅读错误消息:

prog.cpp:64:36:错误:与“operator==”不匹配(操作数类型为“std::basic_string”和“char”) if(原始消息[i]==字母代码[j])

if(原始信息[i]==alphaCode[j])

originalMessage
是一个
vector
alphaCode
vector


您无法将
字符
字符串

您可能希望通过以下方式更改功能:

void Code::encoder(vector<string> input)
{
    originalMessage = input;
    for (int i = 0; i < originalMessage.size(); i++)
    {
        string i_string = originalMessage[i]; // get the string here
        for (int j = 0; j < alphaCode.size(); j++)
        {

            if (i_string.at(i) == alphaCode[j]) // get the char in string
            {
                finalMessage.push_back(morseCode[j]);
                finalMessage.push_back(" ");
            }
        }
    }
}

您的源代码中有几个问题。 第一个问题是消息变量:

vector<string> message;
并根据此更改更改代码的其他部分

第二个问题回到

for (int x; x < finalMessage.size(); x++) cout << finalMessage[x];

for(int x;x STD::MAP<代码>或查找表。不知道。为什么comp sci课程会向你展示解决这个问题最糟糕的方法,通过线性搜索直到你找到正确的代码。哪一行是第64行?我不打算手动计算行数。“你无法将字符与字符串进行比较”。有一些方法,但它们仅在某些上下文中有意义,因此没有默认方法。你的“修复”几乎肯定是错的。“对于
i
th字符串,取
i
th字符,并找到它的莫尔斯电码映射。”听起来不太合理。我试过了,但循环出现了问题。也许我可以创建一个char向量,并将原始消息中的每个元素推回到这个新向量中?@luk32,我没有为代码提供逻辑修复,我提供了一个解决方法来理解并消除编译错误。如果您注意到,OP正在尝试要比较
if(originalMessage[i]==alphaCode[j])
@SriniKumar,
originalMessage
包含
字符串
s。请迭代
向量
,从每个字符串中获取
字符
,并创建所需的新数据结构。
vector<string> message;
string message;
for (int x; x < finalMessage.size(); x++) cout << finalMessage[x];
for (const auto& x : finalMessage) cout << x;