无法打开文本文件,尽管它在我的资源文件中
Cannot open a text file though it is in my resources file
#include <fstream>
#include <iostream>
//Bear in mind that the text file is already in the resources file
int main()
{
ifstream file("Hamlet.txt", ios::in);//open file
if (file.is_open() == true) cout << "File is open" << endl;
else if (file.is_open() == false) cout << "File isnt open" << endl;
return 0;
}
所以我正在尝试查看文件是否打开,文本文件在资源文件中,因此据我所知,文件的路径可以写为"哈姆雷特.txt"。我不断收到文件未打开,可能是什么原因?谁能对此做出解释?提前致谢
如果您谈论的是 Win32 资源文件,则无法打开文件诸如此类。您需要使用资源 API:
HRSRC const rsrc = FindResource(nullptr, MAKEINTRESOURCE(HAMLET), RT_STRING);
HGLOBAL const resource = LoadResource(nullptr, rsrc);
void const* const data = LockResource(resource);
// Use your data here.
HAMLET
是一个预处理器宏,用于从 .rc 文件中识别您的"Hamlet.txt"文件。
问题是您需要在Hamlet.txt
所在的同一目录中运行可执行文件。这在C++中是一个大问题,因此通常您将提供文件的绝对路径,因此您可以执行以下操作:
ifstream file("/path/to/Hamlet.txt", ios::in);
其他一些注意事项:文件要么打开,要么未打开。因此,您不需要else if
,您可以简单地使用else
。此外,您可以使用非假值来指示真;所以你不需要检查== true
(尽管它更明确(。你可以检查if(file.is_open())
,我认为这更具可读性。
将这些建议放在一起,您可以执行以下操作:
#include <fstream>
#include <iostream>
int main()
{
ifstream file("/absolute/path/to/Hamlet.txt", ios::in);
if (file.is_open()) {
std::cout << "File is open" << std::endl;
} else {
std::cout << "File isnt open" << std::endl;
}
return 0;
}
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- 如果我的类正确地管理了一个资源,那么拥有智能的poointer有什么意义
- 我必须输入我的名字才能输入我的资源,我该怎么做
- 如何在构建时改进我的脚本和复制程序资源?
- 为什么我的程序寻找共享资源.dll而不是Commons.lib
- Visual Studio 测试资源管理器找不到我的提升测试
- QT;我如何在运行时存储通往变量的资源路径
- 有没有办法在不使用GDI+的情况下从我的资源加载.png
- 我的程序使用的是在哪里放置字体或其他资源
- 通过我的可执行文件的资源 ID 获取图标索引,C++
- 我在哪里定义代码来释放在C Python模块init函数中分配的资源
- 为什么即使我设置了THREAD_MODE_BACKGROUND_BEGIN,我的程序仍然占用资源
- 如何在 Windows 资源管理器中嵌入我的 GUI
- 无法打开文本文件,尽管它在我的资源文件中
- 在哪里我可以找到谷歌Szl(Sawzall)的资源
- 我是否需要在Qt中释放槽参数的资源
- 为什么我的测试项目没有显示在测试资源管理器上
- 我的程序泄漏了boost::shared_ptr拥有的资源