la lecture des octets avec ifstream

Je suis relativement novice en c++, et avoir quelques problèmes avec ifstream. Tout ce que je veux faire est de lire le fichier octet par octet, cependant, la lecture échoue toujours dans le milieu du fichier. Mon code:

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;
        /* ... */
    }
}

Il lit la première quelques centaines d'octets correctement, puis le reste du fichier est ignoré. Quelque chose de mal à propos de tampon? Qu'ai-je fait de mal?

EDIT:

Je viens de découvrir quelque chose qui pourrait être la cause: dans le fichier j'utilise CRLF les fins de ligne (2 octets), mais toutes les méthodes ci-dessus, revenir à LF, donc à la fin de chaque ligne i est incresed par un seul, cependant, il ya 2 octets dans le fichier. Donc ma question est: comment puis-je obtenir à la fois CR et LF séparément?

Vous obtenez le message "erreur:" rapport? Êtes-vous à la lecture d'un fichier binaire ou d'un fichier texte? Dans le premier cas, avez-vous ouvert la ifstream en mode binaire?
cout << b peut ne pas s'imprimer quelques-uns des personnages, s'ils ne sont pas des caractères imprimables.
Le fichier ne contient que des caractères imprimables.
Si le fichier contient uniquement des caractères imprimables (et pas de '\0') je ne suis pas sûr que le problème est. Pouvez-vous poster le fichier quelque part, ou d'un extrait du fichier qui présente le problème?
Définir la lecture échoue toujours.

OriginalL'auteur Dave | 2012-06-22