2010-12-11 6 views
2

Je le code suivant (simplifié)C++ ne peut pas trouver le fichier (je pense)

int main() 
{ 
    ifstream myFile("input.txt"); 
    if(myFile.is_open()) 
     cout<<"test"; 
} 

Cependant myFile.is_open() est soit faux;

pourquoi?

J'utilise Eclipse et le fichier input.txt est juste dans le dossier src avec le fichier .cpp ...

Merci!

+0

@birryree: il s'avère que nous avons fait indipendemment la même édition. : D –

+0

whoah, désolé! totalement oublié de mettre les crochets de code sur! – kralco626

Répondre

7

Chaque exécutable est - par défaut - exécuté à partir du répertoire de votre projet. Donc, pour un arbre comme celui-ci:

project 
|- src 
| |- a.cpp 
| |- b.cpp 
| |- foo.txt 
| 
|- Debug 
| |- a.exe 
| 
|- foo2.txt 

Vous devez utiliser les chemins comme src/foo.txt ou foo2.txt. Votre exe se trouve dans le répertoire Debug, mais il sera exécuté depuis le répertoire de votre projet. De cette façon, les exécutables de chaque configuration de construction sont exécutés de la même manière (à partir du même endroit).

Vous pouvez modifier votre répertoire de travail et vos arguments sous Exécuter les configurations (menu déroulant à côté de l'icône "Exécuter").Basculez vers l'onglet "Arguments", décochez "Utiliser default" et définissez ce que vous voulez si la valeur par défaut n'est pas OK pour vous.

+0

bonne explication! – kralco626

0

Vous devez probablement configurer le répertoire de travail d'eclipse dans votre répertoire src. Je n'ai aucune idée de ce qu'est le défaut.

1

Vérifiez le répertoire de travail Eclipse sets pour vous. Ce pourrait être celui du binaire. Essayez de placer le fichier input.txt dans le même répertoire que celui de la compilation binaire Eclipse à partir de votre code, puis exécutez l'application.

Pour trouver le paramètre du répertoire de travail de votre projet, regardez dans la boîte de dialogue des paramètres du projet. Cela dit, il est probablement recommandé de coder de manière indépendante de votre répertoire de travail. Vous pouvez définir le répertoire d'installation du binaire dans la chaîne constante du préprocesseur et demander au script d'installation (ou au script de configuration) de définir le #define dans le répertoire approprié. Ou, si ce n'est pas une option, alors vous pouvez récupérer la valeur du répertoire au moment de l'exécution.

+0

On dirait que l'éclipse utilise le répertoire du projet, donc je devais juste dire src/input.txt Merci! – kralco626

+0

Cela devrait également être configurable. Je crois qu'il existe un répertoire de débogage qu'Eclipse crée quelque part dans le répertoire de votre projet. – wilhelmtell

1

Si vous ne spécifiez pas un chemin complet, le programme de recherche dans le répertoire courant, que probablement dans votre cas est le répertoire dans lequel le fichier exécutable est construitmodifier:il se avère que par défaut c'est le répertoire du projet (merci @Kos).

Vous pouvez déplacer input.txt dans ce répertoire, spécifier un chemin d'accès complet (ou un chemin relatif) ou demander à votre EDI de démarrer l'exécutable avec un répertoire différent (je ne sais pas si avec Eclipse c'est possible, je suggère ceci parce qu'avec VS vous pouvez le faire). Par ailleurs, en général, vous devriez éviter de créer des chemins de codage dans vos sources.

+0

Le répertoire actuel est le répertoire du projet par défaut. – Kos

+0

@Kos: corrigé, merci. –

1

Vous avez le fichier input.txt dans votre dossier source mais l'application est exécutée à partir du dossier Debug; de la «source», il est situé au ..\Debug. Il suffit de mettre votre fichier texte là et il devrait fonctionner correctement.

Questions connexes