2009-08-30 7 views
0

sortie de débogage:VS programme C++ fonctionne uniquement lorsque .exe est exécuté à partir du dossier? [VS pas debug]

fichier ouvert ...

Contenu du fichier:

sortie de .exe (exécutée via un double clic du/projet/debug) :

fichier ouvert ...

contenu du fichier: ligne1 ligne2 etc. .

code source:

#include <iostream> 
#include <fstream> 
#include <regex> 
#include <string> 
#include <list> 

using namespace std; 
using namespace tr1; 


int main() 
{ 
    string line; 
    list<string> dataList; 

    ifstream myFile("test_data.txt"); 
    if (! myFile) 
    { 
     cout << "Error opening file. \n"; 
     return 0; 
    } 
    else 
    { 
     cout << "File opened... \n"; 
     while(getline(myFile, line)) { 
      dataList.push_back(line); 
     } 
    } 

    cout << "\n\n File contents:"; 

    list<string>::iterator Iterator; 
    for(Iterator = dataList.begin(); 
      Iterator != dataList.end(); 
      Iterator++) 
    { 
     cout << "\t" + *Iterator + "\n"; 
    } 




    getchar(); 
    return 1; 
} 

merci pour votre aide!

Je comprends maintenant le problème, merci. évidemment, cela montre également que cette méthode de gestion des erreurs pour les fichiers est sans valeur. J'ai corrigé cela aussi. Merci encore.

Répondre

4

La façon dont vous avez cette ligne avons écrit:

ifstream myFile("test_data.txt"); 

signifie que le code est à la recherche du fichier dans le répertoire de travail courant.

Lorsque vous exécutez en dehors du débogueur qui sera /project/debug (dans votre cas), où se trouve probablement le fichier.

Lorsque vous exécutez dans le débogueur qui sera (probablement) \project, qui ne contiendra pas le fichier.

Vous devez disposer de deux copies du fichier, coder en dur le chemin d'accès complet au fichier ou spécifier le fichier lors de l'exécution.

1

Votre fichier .exe est normalement exécuté à partir de Debug/../ lors du démarrage à partir de Visual Studio. Lorsque vous double-cliquez dessus, il s'exécute dans 'Debug /'.

Déplacez votre test_data.txt, ou faites comme la plupart des développeurs et créez un répertoire de sortie où vos fichiers binaires et vos données sont exportés avant l'exécution.

2

Vous pouvez également spécifier le répertoire de travail (où il recherchera test_data.txt) dans la page de propriétés de débogage pour votre projet dans VC.

Questions connexes