ifstream未能打开

时间:2014-02-09 17:10:04

标签: c++ visual-studio ifstream

我正在使用Visual Studio 2013

所以我必须打开.ppm图像文件并对其进行一些操作,但是我试图用来读取数据的ifstream无法打开图像文件。我很确定图像文件在工作目录中(我已经创建并读取了一些简单的.txt文件以确保)。即使经过过度研究,我也无法弄清楚发生了什么。

这是相关代码

编辑:我添加了一些代码来了解我正在尝试做什么

Image * PPMImageReader::read(std::string filename){

        std::string line;
        int width, height, max_val;


        std::ifstream src(filename, std::ios_base::binary);



        if (src.fail()) { //failbit is always set but not badbit
            perror("Logical error on i/o operation. failbit was set\n");
            if (src.bad())
                perror("Read/writing error on i/o operation. badbit was set");
        } 
        if (!src.is_open()) { //and of course this return true
            printf("File was not opened\n");
            exit(1);
        }

     //Edited

     getline(src, line, '\n');

        if (line.empty())
            getline(src, line);

        if (line.find("P6") == std::string::npos) {
            printf("wrong format\n");
            exit(1);
        } 

1 个答案:

答案 0 :(得分:1)

从讨论开始就知道问题是相对路径。

fstream支持相对路径如下..

考虑以下情况:输入文件比exe文件高一级。

E:\MyProgramBin\YourExe.exe
E:\YourInputFile.ppm

在这种情况下,您可以创建如下文件名。

filename1 = "..\YourInputFile.ppm"

并在filename1

中使用ifstream
std::ifstream src(filename1, std::ios_base::binary);