2017-03-17 4 views
1

Ich habe ein Problem in der ifstream Funktion, ich habe versucht, mit der argv[1] als Parameter, aber nicht laden die Karte, die Karte befindet sich im selben Ordner des Hauptcodes. Ich bin hier stecken geblieben und kann nicht debuggen.Fehler beim Lesen der Datei mit ifstream

#include <cstdlib> 
#include <iostream> 
#include <iomanip> 
#include <fstream> 
#include <sstream> 
using namespace std; 

int main (int argc, char *argv[]){ 

    int h; 
    int w; 
    int var; 


    string inputLine; 

    ifstream f; 
    f.open("map.pgm",ios::in); 
    if (!f){ 
     cout << "error" << endl; 
     exit(1); 
    } 

ich Visual Studio 2017

+1

Sichtbolzen io kann debuggen. Was verhindert das Debuggen? –

+1

In VS standardmäßig Programm-Programm-Verzeichnis ist nicht wo Quelle ist, aber ausführbar. Also entweder verschieben Sie dort 'map.pgm' oder geben Sie den vollständigen Pfad an – Slava

+0

Verwenden Sie Process Monitor, um herauszufinden, wo es versucht, die Karte von –

Antwort

-1

Ändern Sie diese Zeile bin mit:

if (!f){ 

durch diese:

if (!f.is_open()){ 

BTW können Sie mit GetModuleFileName aktuellen Verzeichnispfad überprüfen

+1

Kannst du erklären, warum du denkst, dass dies eine Lösung ist und warum es besser ist, nach genau diesem zu suchen als nach einem Fehler im Stream? –

+0

Nicht stören; es ist nicht. –

+0

@RetiredNinja Well OP sagte, dass er fest ist, und kann nicht debuggen. Also ich denke, die Datei ist an der richtigen Stelle und geöffnet ist ein guter Anfang. Nicht wahr? – Rama

Verwandte Themen