读取文件返回奇怪的结果

时间:2016-01-22 12:42:27

标签: c++ ifstream

我正在编写一个带有霍夫曼树的压缩程序。

它生成一个文件,其中填充了一些开销解压缩和一堆随机位,然后将这些位分成8个部分并转换为与这8个位相对应的字符。所以基本上是随机的字符。然后将它们写入文件中。

阅读此文件时会出现两个问题:

  1. 当我输出随机字符时显示的字符与文件中的字符不同。

  2. 我的循环读取文件只停止了几行。

  3. 我正在使用以下函数来读取文件:

    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();
    }
    

    如果有人能告诉我应该在哪里研究那将会很棒!

1 个答案:

答案 0 :(得分:0)

operator>>使用istreamstring时要小心 - 它会跳过空白字符!我的猜测是造成了差异。

您正在加载整个文件。你的方式是不必要的复杂。在此处描述了使用C ++执行此操作的一种好方法:Read whole ASCII file into C++ std::string