【问题标题】:Opening or creating a file from a DirectX 11.2 app从 DirectX 11.2 应用程序打开或创建文件
【发布时间】:2014-08-29 15:52:55
【问题描述】:

我正在尝试打开一个 .obj 文件,其中包含来自 Blender 的球体的顶点和面。问题是我似乎无法在我的一生中打开包含 .obj 数据的文件。我尝试使用普通的 C++ 方式写入 .txt 文件以检查应用程序将在哪里创建它,并且可能尝试将 .obj 文件放在该文件夹中。我用来写入 .txt 文件的代码如下:

std::ofstream myfile("nestotamo.txt");
if (myfile.is_open())
{
    myfile << "This is a line.\n";
    myfile << "This is another line.\n";
    myfile.close();
}
else DebugPrint("Unable to open file");

我发布的代码不起作用,甚至没有创建文件。我应该从哪里尝试加载 .obj 文件,为什么我什至不能创建一个常规的 .txt 文件来找出应用程序放置它们的位置。

我用来尝试加载数据的代码如下:

   std::wifstream fileIn(path.c_str());

        if (fileIn)
        {
            while (fileIn)
            {
                wchar_t line[64];
                fileIn.getline(line, 64);
                DebugPrint(line);
            }
        }
        else {
            DebugPrint("\t The file wasnt loaded...\n");
        }

任何帮助将不胜感激。

【问题讨论】:

  • DebugPrint 语句是否被执行?你确定你找对地方了吗?您可能需要使用绝对路径名,以防当前目录不是您认为的那样。
  • 是的,DebugPrint 被打印,else 子句中的那个表示文件已加载。另外,我尝试打印 .is_open(),它总是输出 false。不仅如此,我还检查了文件甚至没有创建。我不知道该怎么办?

标签: c++ file


【解决方案1】:

我发现在处理文件时我不能使用常规的 c++,因为 DirectX 对处理这些文件有一些额外的限制。但是,幸运的是我发现该文件需要在以下文件夹中:

Solution_Name\x64\Debug(or Release)\Projekt_Name\AppX

我使用的代码是:

        std::wifstream fileIn(path.c_str());

        if (fileIn)
        {
            DebugPrint("The file loading begun: \n\n");

            while (fileIn)
            {
                wchar_t line[64];
                memset(line, '\0', 64);
                fileIn.getline(line, 64);

                DebugPrint(line);
                DebugPrint("\n");
            }
        }
        else {
            DebugPrint("\t The file wasnt loaded...\n");
        }

【讨论】:

  • 我尝试将其写入文件 - 但它对我不起作用。
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 2016-07-11
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多