我正在使用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);
}
答案 0 :(得分:1)
从讨论开始就知道问题是相对路径。
fstream支持相对路径如下..
考虑以下情况:输入文件比exe文件高一级。
E:\MyProgramBin\YourExe.exe
E:\YourInputFile.ppm
在这种情况下,您可以创建如下文件名。
filename1 = "..\YourInputFile.ppm"
并在filename1
ifstream
std::ifstream src(filename1, std::ios_base::binary);