好吧,基本上我有这个文本文件,其中包含应该代表多边形顶点的数字和字母。这部分并不重要,因为我无法将文件解析为 int。到目前为止,函数如下所示:
void parseModel(void)
{
int num_vertices, num_faces;
char data[255];
ifstream ifs("rect-skinny.d");
ifs.getline(data, 255);
istrstream ins(data);
ins >> num_vertices;
cout << num_vertices << endl;
ifs.close();
}
我尝试过许多不同的方法,它们都给了我不同但不正确的答案。由于某种原因,这个输出数字 -858993460。其他时候,当我尝试单独打印数据时,它只会输出右括号。我不知道我做错了什么,因为这似乎应该可行。输入文件是:
data 8 6
-0.5 1.0 0.3
0.5 1.0 0.3
0.5 -1.0 0.3
-0.5 -1.0 0.3
-0.5 1.0 -0.3
0.5 1.0 -0.3
0.5 -1.0 -0.3
-0.5 -1.0 -0.3
4 1 2 3 4
4 1 5 6 2
4 2 6 7 3
4 5 8 7 6
4 1 4 8 5
4 3 7 8 4
基本上我现在要做的就是获取第一行并将这些数字分别放入 num_vertices 和 num_faces 中。
最佳答案
在您读取文本字符串“data”后,它将包含“data 8 6
”。
ins >> num_vertices;
行将尝试读取一个整数,但会找到“data 8 6
”,因此会失败。尝试这样的事情:
void parseModel(void)
{
int num_vertices, num_faces;
char data[255];
std::ifstream ifs("rect-skinny.d");
ifs.getline(data, 255); // data contains "data 8 6"
std::istrstream ins(data); // ins contains "data 8 6"
ins.ignore(4, ' '); // ins contains " 8 6"
ins >> num_vertices;
std::cout << num_vertices << endl;
ifs.close();
}
关于c++ - 我需要有关从 C++ 中的文件进行解析的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401524/