Что я хочу сделать, так это прочитать лица (f), но на них есть "/", которые я не знаю, как удалить? По сути, я хочу получить число лиц, хранящееся во временной переменной. Понятия не имею, как это сделать в c ++ fstream.

std::string text;
    std::istringstream iss(line);

    iss >> text;

    // Easy part!
    if (text == "v")
    {
        glm::vec3 currectPos;

        iss >> currectPos.x;
        iss >> currectPos.y;
        iss >> currectPos.z;

        filePos.push_back(currectPos);
    }
    if (text == "vt")
    {
        glm::vec2 currectUV;

        iss >> currectUV.x;
        iss >> currectUV.y;

        fileUV.push_back(currectUV);
    }
    if (text == "vn")
    {
        glm::vec3 currectNorm;

        iss >> currectNorm.x;
        iss >> currectNorm.y;
        iss >> currectNorm.z;

        fileNorm.push_back(currectNorm);
    }


    // Last part, hard part!
    if (text == "f")
    {
        // Face!!! :O
        // This one here I am having trouble with
        // How do I read it?
    }

v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
vt 0.625000 0.000000
vt 0.375000 0.250000
vt 0.375000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.500000
vt 0.625000 0.500000
vt 0.375000 0.750000
vt 0.625000 0.750000
vt 0.375000 1.000000
vt 0.125000 0.750000
vt 0.125000 0.500000
vt 0.875000 0.500000
vt 0.625000 1.000000
vt 0.875000 0.750000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
f 2/1/1 3/2/1 1/3/1
f 4/4/2 7/5/2 3/2/2
f 8/6/3 5/7/3 7/5/3
f 6/8/4 1/9/4 5/7/4
f 7/5/5 1/10/5 3/11/5
f 4/12/6 6/8/6 8/6/6
f 2/1/1 4/4/1 3/2/1
f 4/4/2 8/6/2 7/5/2
f 8/6/3 6/8/3 5/7/3
f 6/8/4 2/13/4 1/9/4
f 7/5/5 5/7/5 1/10/5
f 4/12/6 2/14/6 6/8/6
0
Matie 17 Июн 2020 в 21:06

1 ответ

Лучший ответ
int i, j, k;
char c;
iss >> i;
iss >> c; // remove the /
iss >> j;
iss >> c; // remove the next /
iss >> k;

Сохраните где-нибудь i, j, k и так далее, затем повторите столько раз, сколько потребуется.

0
stackoverblown 18 Июн 2020 в 09:13