gpt4 book ai didi

c++ - 使用 C++ 从 .OBJ 文件中读取和存储值

转载 作者:太空狗 更新时间:2023-10-29 21:24:13 27 4
gpt4 key购买 nike

首先,抱歉英语不好。好吧,我正在尝试读取 .OBJ 文件的值(请参阅 here )并使用此程序将它们存储在变量中:

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;

int main()
{
string line;
string v, valuesX[8], valuesY[8], valuesZ[8];
int n = 0;

ifstream myfile ("cubo.obj");
while(!myfile.eof())
{
getline (myfile,line);
if (line[0] == 'v')
{
myfile >> v >> valuesX[n]>> valuesY[n]>> valuesZ[n];
cout << valuesX[n] << "\t" << valuesY[n] << "\t" << valuesZ[n] << endl;
n++;
}
}
return 0;
}

该文件只是一个简单的立方体,由 Blender 导出。我希望他向我展示所有以“v”开头的行,但结果只显示奇数“v”行。当我直接读取变量“line”的值时,结果是一样的。然而,当我去掉为变量“value”赋值的那一行,直接读取变量“line”时,程序运行完美。任何人都知道向我解释发生了什么事?为什么程序忽略偶数行?

最佳答案

正如我在评论中提到的,您阅读了一行:

getline (myfile,line);

然后,如果该行的第一个位置有 v,您将使用以下语句读取另一行:

myfile >> v >> valuesX[n]>> valuesY[n]>> valuesZ[n];

但是您不处理使用 getline 读入的前一行,因此您将丢失该行。一种可能的解决方案是使用 istringstraeam 处理匹配的每个 line:

std::istringstream iss( line );
iss >> v >> valuesX[n]>> valuesY[n]>> valuesZ[n];

关于c++ - 使用 C++ 从 .OBJ 文件中读取和存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com