【发布时间】:2014-02-09 17:10:03
【问题描述】:
我正在使用 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);
}
【问题讨论】:
-
我很确定文件路径不正确。您可以尝试使用硬编码绝对路径吗?即使您的工作目录中有文件,您的应用程序启动目录也可能不同。
-
@Digital_Reality 它确实可以使用绝对路径,但它不是很方便,因为文件名是命令行参数。请原谅我的无知,但是启动目录是什么?
标签: c++ visual-studio ifstream