C++ 编码器程序没有正确编码重复字符
C++ encoder program not encoding duplicate characters properly
对于class,我正在开发一个编码器程序。它所做的就是将消息文件逐字符与书文件进行比较,首先匹配它找到的字符并将该字符在书文件中的位置发送到编码文件。但是一旦它必须再次搜索该字符,它就必须找到该字符的下一次出现。
例如,假设我想使用也表示 "Hello world" 的书本文件对 "Hello world" 进行编码。我应该得到的是一个编码文件,上面写着“0 1 2 3 4 5 6 7 8 9 10 11”,而不是我得到的是“0 1 2 2 4 5 6 4 8 9 10 11”
for (unsigned int i = 0; i < messageFileVector.size(); i++)
{
asciiValue = messageFileVector[i];
if (asciiValue < 128 || asciiValue >= 0)
{
count = startingPosition[(int)asciiValue];
for (unsigned int j = (unsigned int)startingPosition[(int)asciiValue]; j < (int)bookFileVector.size(); j++)
{
if (count == bookFileVector.size() - 1)
{
count = 0;
j = 0;
}
if (messageFileVector[i] == bookFileVector[j])
{
startingPosition[(int)asciiValue] = count + 1;
codedFile << j << " ";
break;
}
}
count++;
continue;
}
else
{
cout << "Error: message has non-ascii characters" << endl;
codedFile.clear();
return EXIT_FAILURE;
}
我最好的猜测是我在迭代器上做错了什么,但我终究无法弄清楚是什么。
startingPosition[(int)asciiValue]
应设置为 j+1
,而不是 count+1
。
对于class,我正在开发一个编码器程序。它所做的就是将消息文件逐字符与书文件进行比较,首先匹配它找到的字符并将该字符在书文件中的位置发送到编码文件。但是一旦它必须再次搜索该字符,它就必须找到该字符的下一次出现。 例如,假设我想使用也表示 "Hello world" 的书本文件对 "Hello world" 进行编码。我应该得到的是一个编码文件,上面写着“0 1 2 3 4 5 6 7 8 9 10 11”,而不是我得到的是“0 1 2 2 4 5 6 4 8 9 10 11”
for (unsigned int i = 0; i < messageFileVector.size(); i++)
{
asciiValue = messageFileVector[i];
if (asciiValue < 128 || asciiValue >= 0)
{
count = startingPosition[(int)asciiValue];
for (unsigned int j = (unsigned int)startingPosition[(int)asciiValue]; j < (int)bookFileVector.size(); j++)
{
if (count == bookFileVector.size() - 1)
{
count = 0;
j = 0;
}
if (messageFileVector[i] == bookFileVector[j])
{
startingPosition[(int)asciiValue] = count + 1;
codedFile << j << " ";
break;
}
}
count++;
continue;
}
else
{
cout << "Error: message has non-ascii characters" << endl;
codedFile.clear();
return EXIT_FAILURE;
}
我最好的猜测是我在迭代器上做错了什么,但我终究无法弄清楚是什么。
startingPosition[(int)asciiValue]
应设置为 j+1
,而不是 count+1
。