我只是尝试一些文件处理的东西 我有一个最大大小约为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;
它完全正常。
答案 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似乎足够合理。