2017-03-17 131 views
1

我在ifstream函數中遇到問題,我嘗試使用argv[1]作爲參數,但不會加載地圖,地圖位於主代碼的同一文件夾中。 我被困在這裏,無法調試。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); 
    } 

我使用Visual Studio 2017年

+1

視覺螺柱io可以調試。什麼阻止你調試? –

+1

在默認情況下,程序當前目錄不是源代碼,而是可執行文件。因此,無論您在那裏移動'map.pgm'或指定完整路徑 – Slava

+0

使用進程監視器找出它試圖從 –

回答

-1

改變這一行:

if (!f){ 

本:

if (!f.is_open()){ 

順便說一句,你可以查看當前目錄路徑與GetModuleFileName

+1

你能解釋爲什麼你認爲這是一個解決方案嗎?爲什麼最好只檢查這個而不是流中的任何錯誤? –

+0

不要打擾;它不是。 –

+0

@RetiredNinja嗯OP說他卡住了,無法調試。所以我認爲檢查文件是在正確的地方,打開是一個好的開始。你不是嗎? – Rama