我对C++比较陌生,并且在ifstream中有一些问题。我想要做的就是逐字节读取文件,但是在文件中间读取总是失败。我的代码:用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?
你是否收到“error at:”报告?你正在阅读一个二进制文件或文本文件?如果前者,你是否以二进制模式打开ifstream? –
'cout << b'不能打印某些字符,如果它们不是可打印的字符。 – Nawaz
该文件只包含可打印的字符。 – Dave