0

我正在为波前 *.obj 文件开发一个非常简单的解析器。

一般的想法是读取文件的每一行,然后根据 start 关键字相应地解析该行,但我有一些麻烦:

bool Model::loadModel(const char* fileName)
{
 std::ifstream file(fileName, std::ios::binary);

 if(file.fail())
  return false;

 std::string line;
 std::string type;
 std::istringstream istr;

 while(std::getline(file, line))
 {
  istr.str(line); 
  istr>>type;

.
.
.

例如,我在第一行中拥有的文件:

g 龙

所以在“类型”中我存储了一个“g”。问题是当我阅读下一行时

v -0.136296 0.0938588 -0.0307373

istr 显然已初始化,但在 >> 操作类型之后仍有“g”。

循环继续,“g”值永远不会改变。

我还有其他一些可以完美阅读的 *.obj 文件,唯一的区别是在调试器中,我在所有行的末尾都看到了一个 '\r'。

从 istringstream 中提取数据是否需要此字符?

4

0 回答 0