输出8192个字符后停止输出



我只是在尝试一些文件处理的东西
我有一个最大大小约为100,000个字符的数组,我已经让它填充了大约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;
}

这是我的类Encrypt的运算符函数。

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

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

提前感谢!

+)当我做完全相同的事情时,然后做

cout << encrypt;

代替

ofile << encrypt;

它完全正常

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

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似乎足够合理。

最新更新