在 C++ 中打开文件时出错:从字符串中获取字符时出错
Error opening a file in C++: Error getting characters from string
所以我有一些打开文件的代码:
#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"的文件,它可以正常工作。 我不知所措。 我在谷歌上看了一下,它说字符串可能在使用之前被销毁,但字符串在文件打开行仍然很好。
下面是调试手表的屏幕截图。
我可以继续我的小项目一段时间,但这个问题非常烦人,所以任何帮助将不胜感激。
编辑:现在使用最少的可重现代码,并在正确的阶段调试手表。 谢谢你的提示,伙计们。
调试输出显示在错误的阶段。您需要在调试器单步执行_texFile变量后查看它。您发布的图像表明调试器尚未执行有问题的语句,因此您可能会被误导。
尝试做一些简单的测试。将一些文件放入C:file.png
,确保文件存在并检查它是否打开。您也可以尝试使用某些C++函数检查文件是否存在,(ifstream
需要绝对路径,我在按相对路径打开文件时遇到了类似的错误(
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么 stl 字符串C++函数有时出错有时会出错?
- 读取字符串C++的字符时出错
- 读取字符串字符时出错 - 对于数组中的字符串值
- 通过字符串::插入插入字符时出错
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 读取字符串字符时出错
- 计算字符串中字符的出现次数时出错
- 在字符串中反转元音时出错
- C++ 使用 Strtok 读取字符串字符时出错
- 在 c++ 中调用将字符串作为参数传递的函数时出错
- 使用 C++Builder 项目读取字符串中的文件时出错
- 在字符串流中使用来自 github 的代码时出错
- C ++ ifstream 无法读取字符串,并且在读取字符时出错
- 从字符串中读取字符时出错
- std::out_of_range 比较字符串中的符号时出错