c++ - 我需要有关从 C++ 中的文件进行解析的帮助

标签 c++ parsing opengl model

好吧,基本上我有这个文本文件,其中包含应该代表多边形顶点的数字和字母。这部分并不重要,因为我无法将文件解析为 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/

相关文章:

c++ - 使用指针打印 argv 和 environ

c++ - 将整数左移 32 位

Java - 如何使用 RegEx 解析此字符串

c - 在 Raspberry Pi 2 上使用多线程进行 SDL2 渲染

c++ - 为什么 (void)sizeof(param) 不是 "using"参数?

c++ - std::lock_guard 不会解锁

c++ - 无法从 stringstream 解析数字并正确输出它们 C++

C# 仅将 DateTime String 解析为时间

c++ - 使用 OpenGL 互操作的 nsight 调试

c++ - GLM + STL : operator == missing