1

我已将图像“padimage.png”添加到我的资源文件夹并设置add to targetmake copy if needed检查。然后在我的 c++ 代码中,我有以下代码来检查它是否可以到达文件

std::ifstream my_file("padimage.png");
if (my_file.good())
{
    std::cout << "could read file \n";
} else {
    std::cout << "could not read file \n";
}

这失败意味着我无法访问该文件。我已经检查了调试构建文件夹,并且图像在资源文件夹下,我还尝试了文件的替代路径,如"resources/padimage.png"|| Resources/padimage.png|| ../Resources/padimage.png等等等等

我对 c++ 还是很陌生,所以我不太明白它是如何查找文件或它搜索相对于什么路径的。此外,我确信这是一个非常简单的问题,但我无法解决它。

非常感谢所有帮助。

4

2 回答 2

2

只是为了您自己的理智,请先执行以下操作。

char wd[1024];
std::cout << getcwd(wd, sizeof(wd)) << std::endl;

您可能会惊讶于您所在的位置,以及您无法打开文件的原因。从 IDE 运行时,您可以在 Xcode 的 Product/Edit Schemes... 区域(以及其他地方)下指定工作目录的位置。

于 2012-09-30T09:06:25.053 回答
1

感谢 WhozCraig 的建议,我设法通过使用项目的根目录,然后在应用程序旁边创建一个独立文件,如下所示:

./padimage.png

然而这并不理想。这意味着我将拥有项目之外的资源。

但是经过一些试验和错误后,我设法通过使用 .app 到程序包名称来导航到程序包内容;

./ProjectName.app/Contents/Resources/padimage.png 
于 2012-09-30T09:55:00.433 回答