我正在为波前 *.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 中提取数据是否需要此字符?