2010-07-01 3 views
0

Lorsque j'utilise le code recommandé dans le livre, j'obtiens une erreur. J'utilise NetBeans 6.8 pour Mac.C++: comment puis-je écrire un programme pour lire des entiers à partir d'un fichier?

Voici le code:

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() 
{ 

    ifstream inputFile; 

    int number; 

    inputFile.open("MacintoshHD/Users/moshekwiat/Desktop/random.txt"); 

    inFile >> number; 

    cout<<endl <<number<<endl; 

    inputFile.close(); 

    return (0); 
} 

Voici l'erreur:

main.cpp:20: error: 'inFile' was not declared in this scope 

Ce qui doit être fait ?? Merci

Répondre

2

Remplacer inFile avec INPUTFILE.

+0

Merci-débarrassé de l'erreur, mais maintenant il sort simplement 0! Le fichier a un nombre différent sur chaque ligne – mokwi8

+0

@ mokwi8: Si vous voulez lire chaque ligne, faites-le. Il n'y a aucune trace d'une boucle dans votre programme. Vous lisez inFile une fois dans le programme, et c'est probablement ce qui se passe. –

+0

@David Thornley: Désolé, je suis nouveau à C++/programmation en général. Quelle serait la meilleure instruction de bouclage à utiliser? Je ne sais pas combien de numéros il y a. En outre, j'ai vérifié le numéro de fichier-premier n'est pas 0, il est 42 – mokwi8

1

changement inFile-inputFile

1

Pour commencer, il n'y a pas d'objet 'inFile' dans votre code.

inFile >> number; 

Regardez à nouveau:

ifstream inputFile; 
1

utilisation INPUTFILE au lieu de inFile

2

Problème 1 (celui que le compilateur voit) est une simple faute de frappe: inFile devrait être inputFile. Assurez-vous de vérifier les fautes de frappe comme ceci avant de poster sur Stack Overflow. Problème 2: le chemin d'accès à votre fichier est probablement faux, et généralement, lorsque vous essayez de lire à partir d'un flux qui n'a pas pu être initialisé correctement parce que le fichier n'a pas pu être ouvert, vous obtiendrez 0.

dans ce cas, le chemin que vous avez spécifié est un chemin relatif au fichier à partir du répertoire de votre programme a été lancé, donc quel que soit le répertoire que vous avez exécuté le programme à partir aurait besoin d'un sous-répertoire appelé « MacintoshHD », puis « utilisateurs » , alors ... vous avez l'idée. Pour obtenir le chemin correct, faites un clic droit sur le fichier dans le Finder et sélectionnez "Obtenir des informations". Sous "Où:" vous verrez le bon chemin vers le répertoire qui contient votre fichier; il dira probablement "/ Users/moshekwiat/Desktop". Ajoutez "/random.txt" à cela et cela devrait être le chemin que vous utilisez.

Normalement, les programmeurs C++ écriront du code pour s'assurer que le fichier s'ouvre correctement avant d'en lire. Un moyen simple de vérifier cela après avoir initialisé inputFile, mais avant d'essayer de lire à partir de là est:

if (! inputFile) { 
    cerr << "Could not open the file!" << endl; 
    return 1; // returning non-0 status is customary 
       // if your program encounters an error 
} 
Questions connexes