我正在编写一个带有霍夫曼树的压缩程序。
它生成一个文件,其中填充了一些开销解压缩和一堆随机位,然后将这些位分成8个部分并转换为与这8个位相对应的字符。所以基本上是随机的字符。然后将它们写入文件中。
阅读此文件时会出现两个问题:
当我输出随机字符时显示的字符与文件中的字符不同。
我的循环读取文件只停止了几行。
我正在使用以下函数来读取文件:
void Convertor::HuffmanToFile(string outputLocation){
string fileInfo, fileDataPiece;
ifstream inputFile;
ofstream outputFile;
stringstream fileData;
outputFile.open(outputLocation, ofstream::out | ofstream::trunc);
inputFile.open(inputLocation);
if (inputFile.fail()) {
cerr << "Error opening text file" << endl;
exit(1);
}
while (inputFile >> fileDataPiece){
fileData << fileDataPiece;
}
inputFile.close();
Decoder decoder(fileInfo,fileData.str());
outputFile << decoder.decodeInfo();
outputFile.close();
}
如果有人能告诉我应该在哪里研究那将会很棒!
答案 0 :(得分:0)
从operator>>
使用istream
到string
时要小心 - 它会跳过空白字符!我的猜测是造成了差异。
您正在加载整个文件。你的方式是不必要的复杂。在此处描述了使用C ++执行此操作的一种好方法:Read whole ASCII file into C++ std::string