2010-06-22 5 views
0

J'ai essayé de lire des données à partir d'un fichier texte en utilisant fstream mais j'ai obtenu des données erronées.Entrée de données incorrecte avec fstream

ifstream fin ("C:\\Users\\rEgonicS\\Documents\\test.in"); 
int number; 
fin >> number; 
cout << number; 

test.in est tout simplement 12.
cout lit 4273190. Est-ce que quelqu'un peut expliquer pourquoi c'est ainsi et comment le réparer?

+1

Est-ce que test.in est littéralement "12" avec des guillemets ou est-ce juste 12, et comment est-il codé? Si vous n'êtes pas sûr, quelle est la taille du fichier et avec quel programme l'avez-vous sauvegardé? –

+0

Il est simplement 12. Je l'ai enregistré dans le bloc-notes et la taille du fichier est de 4 octets et 4 Ko sur le disque. – rEgonicS

Répondre

3

La cause la plus probable est l'échec de l'ouverture du fichier. Vérifiez l'état après l'ouverture, et aussi après la lecture; Pour un test simple, faites quelque chose comme ceci:

ifstream fin ("C:\\Users\\rEgonicS\\Documents\\test.in"); 
if (!fin) cout << "File open failed\n"; 
int number; 
fin >> number; 
if (!fin) cout << "File read failed\n"; 
cout << number; 

Cela pourrait donner une idée supplémentaire de ce qui se passe.

+0

J'ai exécuté le programme ci-dessus et à la fois "File open failed" et "File read failed" sont apparus. – rEgonicS

+0

Cela signifie donc qu'il n'a pas réussi à ouvrir (il ne sera alors pas lu car il n'est pas ouvert). Le chemin est-il correct? Le fichier est-il lisible? –

Questions connexes