【发布时间】:2016-02-14 14:30:30
【问题描述】:
所以我有一些打开文件的代码:
#include <string>
#include <fstream>
#include <iostream>
#include <stdio.h>
void OpenFile(std::string filename);
int main()
{
OpenFile("c:\\Programming\\Viper\\ViperEngine\\Debug\\plop.png");
return 0;
}
void OpenFile(std::string filename)
{
std::ifstream file(filename, std::ios::in | std::ios::binary);
if(!file.good())
{
std::cout << "I am Error";
std::cin.get();
return;
}
std::cin.ignore();
file.close();
}
这一切对我来说都很好,但它不起作用。当我运行调试器时,它说 Seteback 和 setegptr 等于 0xcccccccc 并且在尝试打开文件时从字符串中读取字符时出错。我尝试将文件名硬编码到文件打开调用中 (std::ifstream texFile("c:\Programming\Viper\ViperEngine\Debug\floop.png", std::ios::in | std::ios: :binary)),但这仍然不起作用。奇怪的是,如果我在完全相同的目录中使用名为“bloop.bmp”的文件,它工作正常。我很茫然。我在谷歌上看了看,它说字符串可能在使用之前就被破坏了,但字符串在文件打开行仍然很好。
Here 是 Debug 手表的截图。
解决这个问题我可以继续我的小项目一段时间,但它非常烦人,因此非常感谢任何帮助。
编辑:现在使用最少的可重现代码,并在正确的阶段进行调试观察。感谢您的提示,伙计们。
【问题讨论】:
-
好的,谢谢,我会整理一份。
-
该代码是否能够编译?当你调用它时,你没有向函数传递足够的参数。
-
@JoachimPileborg 我用最小的可复制示例编辑了代码。我已经编译并运行它并确认它不起作用。