问题:
当我在几个文件上运行我的代码以提取内容时,在大约20%的文件中,第一次迭代将a
和b
都设置为255
(每个位为1),程序立即退出,因为这不应该发生。什么错误可能导致这个?
代码:
ifstream file(file_name);
ofstream output(outfile_name);
vector<string> dictionary; //these are all properly initialized earlier
unsigned char a, b;
while(!file.eof())
{
a = file.get();
if(!file.eof()) b = file.get();
else break;
int id = b + 256*a;
if(id < 0 || id > dictionary.size()) //this shouldn't happen
{
cout << a << ' ' << b << ' ' << id << endl;
break;
}
output << dictionary[id] << ' ';
}
背景:我有几个大文件,并决定迭代所有文件并生成字典。使用有序字典,我为每个单词分配了一个唯一ID(两个unsigned char
s,a
和b
)。然后我用他们唯一的ID替换了所有单词,这就是file
现在是unsigned char
s的长序列,每个单词有两个。不幸的是,从ID转换回单词似乎无法正常工作。遍历某些文件时,为什么a
和b
设置为255
?