使用 ifstream 读取字节
reading bytes with ifstream
我对 c++ 比较陌生,并且对 ifstream 有一些问题。我想做的只是逐字节读取文件,但是,读取总是在文件中间失败。我的代码:
void read(ifstream&f)
{
unsigned char b;
for (int i=0;;++i)
{
if(!f.good())
{
cout<<endl<<"error at: "<<i;
return;
}
f>>b; // b=f.get(); and f.read(&b, 1); doesnt work either
cout<<b;
/* ... */
}
}
它正确读取前几百个字节,然后跳过文件的其余部分。缓冲有什么问题?我做错了什么?
编辑:
我刚刚发现了一些可能是原因的东西:在文件中我使用 CRLF 行尾(2 个字节),但上述所有方法都只返回 LF,所以在每行的末尾我只增加一个,但是文件中有 2 个字节。所以我的问题是:我怎样才能分别获得CR和LF?
尝试
f.read(&b, 1);
<<
和 get()
都用于文本,而不是二进制数据。
我终于通过以二进制模式打开文件来让它工作(感谢 Alex 引起我的注意)。
似乎 CR 角色搞砸了 ifstream 和 cout,这引起了我的困惑,我会记住这一点。
相关文章:
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 在java中读取c++字节的位字段
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 如何从保存在 Java 中C++的字节数组中读取数字?
- Async_read_until限制读取的字节大小(Boost::asio)
- 如果由不同的线程写入 8 字节,那么现代英特尔 x86 上的 8 字节读取是否保证理智?
- C++ - 将任何文件的字节读取到无符号字符数组中
- InternetReadFile 填充缓冲区,但返回零字节读取
- ReadFromFile C++具有未知字节读取大小
- 从字节 [] 读取字符串
- C 如何将字节读取为整数enderness独立
- x64 CPU上的原子16字节读取
- 具有重叠I/O的FILE_FLAG_NO_BUFFERING-字节读取为零
- std::数组和字节读取
- 如何发现字节读取是日语还是英语
- 内存的字节读取:"signed char *" vs "unsigned char *"
- TCP Recv使用select()返回1字节读取
- c++字节读取问题