ifstream文件读取错误

问题描述:

我在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

使用进程监视器找出它试图从 –

改变这一行:

if (!f){ 

本:

if (!f.is_open()){ 

顺便说一句,你可以查看当前目录路径与GetModuleFileName

+1

你能解释为什么你认为这是一个解决方案吗?为什么最好只检查这个而不是流中的任何错误? –

+0

不要打扰;它不是。 –

+0

@RetiredNinja嗯OP说他卡住了,无法调试。所以我认为检查文件是在正确的地方,打开是一个好的开始。你不是吗? – Rama