Fstream 在点击 EOF 时读取行为
fstream read behavior upon hitting eof
1.如果fstream::read((在读取长度字段的足够字符之前命中eof会发生什么?
2.在这种情况下,我如何知道已经读取了多少个字符?
谢谢
while(in_file.read(buffer, buffer_length)){
//what happens if eof not at the end of size buffer_length
temp = sendto(sender_socket, buffer, sizeof(buffer), 0, NULL, 0);
byte_count += temp;
msg_count ++;
}
我在这里要做的是以固定长度的文件读取并发送给sender_socket但是对于最后一条消息,缓冲区很可能未填充,而不是 sizeof(buffer( 我如何确定我发送的大小。这些文件将采用二进制形式。
从文档中:
如果在成功读取
n
字符之前输入序列用完要提取的字符(即到达文件末尾(,则s
指向的数组包含在此之前读取的所有字符,并且为流设置了eofbit
和failbit
标志。
...
此函数成功读取和存储的字符数可以通过调用成员gcount
访问。
所以你可以做到:
while(in_file.read(buffer, buffer_length)){
temp = sendto(sender_socket, buffer, sizeof(buffer), 0, NULL, 0);
byte_count += temp;
msg_count ++;
}
streamcount n = in_file.gcount();
if (n > 0) { // read a partial buffer
temp = sendto(sender_socket, buffer, n, 0, NULL, 0);
byte_count += temp;
msg_count++;
}
相关文章:
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 而(!inputfile.eof())只读取第一行?
- 如何在 EOF 之前从文件中读取并将其放入字符串中?
- 如何在从文件中读取整数时使用 file.eof()?
- std::cin 在读取 EOF 并清除后不再读取
- 读取 c++ istream 直到 EOF,同时丢弃内容
- 使用 gzread 读取直到 EOF 并膨胀浮点值
- Fstream 在点击 EOF 时读取行为
- .EOF 在读取文件时导致 Seg 错误:FIXXED
- 输入文件读取错误的值,eof 控制循环不会结束
- C OOP,读取文件的问题,EOF使用了两次,排行榜
- 为什么Windows不能读取超过0x1A(EOF)字符,而Unix可以?
- C++和 eof 中的文件读取
- 简单C++不读取EOF
- 如果用户输入字符串,请在用户中读取 n和eof
- std :: getline部分读取第一行,并设置eof-bit
- 在读取C 文件时跳过EOF
- 输入 EOF 后,不能重复使用 cin 来读取值
- ifstream未读取EOF字符
- 如何在C++中从cin读取EOF