c++ - 为什么此代码无法读取 Blender 的 .obj 文件?

标签 c++ iostream wavefront

嗨,我正在尝试读取使用 Blender 创建的 Wavefront 文件。我将此文件的拷贝放入解决方案资源管理器中。当我第一次尝试编译时,我收到以下消息:

fatal error LNK1107: invalid or corrupt file: cannot read at 0x...

编译器似乎将 Blender 的 .obj 文件与其他也使用 .obj 结尾的格式混淆了。解决方案是在其属性中将该文件从构建过程中排除。

现在应用程序确实可以编译,但没有像我期望的那样显示数据。不确定这是否是代码问题。

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
using namespace std;

void ReadPrintFile(string _fileName)
{
    std::string line;
    std::ifstream fileStream (_fileName);   

    if (fileStream.is_open())
    {
        while (getline(fileStream,line))
        {
            cout << line << '\n';
        }
        fileStream.close();
    }
    else
    {
        cout << "Unable to read file";
    }
}

int _tmain(int argc, _TCHAR* argv[])
{

    ReadPrintFile("Drone.obj");
    std::cin.get();

    return 0;
}

代码不会跳转到else语句中。文件流似乎是空的,我直接转发到 cin.get(); 语句。我知道有大量关于如何在 C++ 中解析 .OBJ 的教程,但我想了解。

最佳答案

诀窍是不要将文件复制到解决方案资源管理器中,而是复制到项目文件夹中。

关于c++ - 为什么此代码无法读取 Blender 的 .obj 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25447189/

相关文章:

c++ - 使用 QueryPerformanceCounter() 倒计时

c++ - cout 语句中首先运行的是什么? (C++17)

c++ - 如何提供 std::set 与另一个函数的比较函数

c++ - if(!(is >> s)) 是什么意思?

parsing - 解析 Wavefront .obj 纹理坐标时遇到问题

c++ - 设置和重置部分位图

c++ - + 运算符在 cout 中做什么?

java - OpenGL obj 文件无法在 JOGL 中正确渲染

haskell - 带有自定义标记数据类型的 parsec-3.1.0

c++ - 用于在任何基础上流式传输整数的自定义流操纵器