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