我是否必须在每次使用 ifstream 读取后寻找
Do I have to seek after each read using ifstream?
这是我从任何大小的文件读取的循环,每次写入 1016 字节的 char* 数据包,然后发送它(发送尚未包含)。
seekg() 有必要吗?还是阅读已经将指针移到下一个块的前面?
ifstream file (packet.message, ios::in|ios::binary|ios::ate);
if(file.is_open()) {
size = file.tellg();
file.seekg(0, ios::beg);
for(int i = 0; !ios::eof; i++) {
memset(packet.message,0,1016*sizeof(char));
file.read(packet.message,1016*sizeof(char));
file.seekg(i*1016*sizeof(char));
}
}
我知道这不是写入文件的问题,因为您只需一直写入到最后,直到文件大小合适。
编辑:在 if 语句中添加了整段代码。
没有必要
。从上次看到文件指针的位置继续读取,与写入完全相同。
我敢打赌,该文件没有以std::ios_base::binary
模式打开,并且memset()
和seekg()
都用于掩盖结果效果:两者都不需要,尽管如果文件读取部分记录,您可能需要清除文件末尾的尾随字节。
顺便说一句:您总是想在阅读后检查流的状态:
while (in.read(buffer, size)) {
...
}
另外: sizeof(char) == 1
.
相关文章:
- ifstream 读取的字符与文件中写入的字符不同
- 将 ifstream 读取到 char* 以进行 int 和字符串转换
- 从 ifstream 读取 int 到 2-D 动态数组
- 使用 c++ ifstream 读取文本文件问题
- 尝试使用 ifstream 读取数据后显示不正确的数字
- C 提升ifstream读取文件内容,带有白色空间,折断,标签等
- ifstream读取二进制文件在发行模式下工作,但在调试模式下不使用
- 从 ifstream 读取,直到文件结束
- ifstream 读取以 开头的每个文件
- 使用 std::ifstream 读取 ASCII 文本文件C++
- 使用 ifstream 读取文件时出错
- 为什么我不能使用 ifstream 读取撇号而不会崩溃?
- 无法使用 fstream 和 ifstream 读取 NDK C++中的文件
- C++ifstream读取偏移范围
- 在生成器 6 中使用 ifstream 读取 txt 文件C++
- C++使用ifstream读取文件
- 写入 ofstream,然后使用 ifstream 读取不会读取整个文件
- std::getline 在从 ifstream 读取时不会跳过空行
- 使用 ifstream 读取浮点数
- 符号从 ifstream 读取两次