输出8192个字符后文件输出停止

时间:2013-06-19 06:29:53

标签: c++ file-io console

我只是尝试一些文件处理的东西 我有一个最大大小约为10万个字符的数组,我已经有了它可以填充大约11000个字符。

我试图将数组输出回文件 但是我意识到文件在一个奇怪的地方被切断了 所以我查看了实际的数组,并意识到文件输出只有它的8192字符。 (str [8191])

std::ostream &operator << (std::ostream &os, Encrypt &s) {
    if(s.c_count == 0) { 
        cerr << "No ciphertext available!" << endl; os << "";
    }
    else 
        for(int i=0; i<s.c_count; i++) { 
            os << s.txt.m[i]; 
    }

    return os;
}

这是我的课程加密的操作员功能。

OutputName = "OUT.txt";
fstream ofile(OutputName.c_str(), ios_base::app);
ofile << encrypt;

我的8193rd字符只是一个普通字符,它不像空字符或任何东西。为什么会发生这种情况?如何解决这个问题?

提前致谢!

+)当我做同样的事情时,做

cout << encrypt;

代替,

ofile << encrypt;

它完全正常。

1 个答案:

答案 0 :(得分:1)

如果要永久关闭流,请尝试此操作。您必须重新打开该流并附加数据:

OutputName = "OUT.txt";
fstream ofile(OutputName.c_str(), ios_base::app);
Outputname.close();
ofile << encrypt;

或者如果您想让缓冲区为空以进一步存储数据并且 NOT 关闭流:

OutputName = "OUT.txt";
fstream ofile(OutputName.c_str(), ios_base::app);
Outputname.flush();
ofile << encrypt;

我不是C ++程序员,但我认为所有流都有8192字节的字符限制。出于性能原因,在编写文件时使用512字节的倍数是合理的,8kb似乎足够合理。