输出8192个字符后停止输出
File output stops after outputting 8192 characters
我只是在尝试一些文件处理的东西
我有一个最大大小约为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似乎足够合理。
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符的输入/输出操作
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- C++输出奇怪的字符而不是数字 (Windows)
- 如何存储 unicode 字符并将其输出到文件?
- C++中附加的字符*的奇怪输出
- 来自无符号字符缓冲区的虚拟输出
- 将未签名的字符写入输出文件
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 字符数组到十六进制字符串的转换 - 意外输出
- 存储和打印字符,但输出不是预期的
- 在函数中连接两个字符,并在 C++ 中返回输出
- 为什么要更改这两个代码的输出"&"字符?
- 输出字符时出现分段错误**
- 如何输出字符**
- C ++中的输出字符数组会产生奇怪的符号
- 输出字符的ASCII值
- 输出字符文字 { 以流C++
- 无法在结构中输出字符