在处理文件使用stringstream时字符迭代器出了错误

问题遇到的现象和发生背景

在处理一些数据时,报错字符迭代器出错,感觉是使用stringstream的时候出错了

问题相关代码,请勿粘贴截图

float x, y, z;
string xx, yy;
int n=0,r,s,t,i;
string content;
ifstream fileStream(filePath, ios::in);
string line = "";
while (!fileStream.eof()) {
getline(fileStream, line);
n = n + 1;
string u = "*Node", v = "*Element, type=C3D8R", w = "*Nset, nset=Set-1, generate";
if (line.compare(0,-1, "*Node" )== 0) {

        r = n;
    };
    if (line.compare(0, -1, "*Element, type=C3D8R") == 0) {
        s = n;
    };
    if (line.compare(0, -1, "*Nset, nset=Set-1, generate") == 0) {
        t = n;
    };
};
    fileStream.clear();   //添加clear函数
    fileStream.seekg(r+1);
for(i=0;i<s-r;i++){
    getline(fileStream, line);
    stringstream ss(line.erase(0,2)),sss;
    ss >> xx; xx.erase(xx.end(), xx.end() + 1); sss << xx; sss >> x;
    ss >> yy;  yy.erase(yy.end(), yy.end() + 1); sss << yy; sss >> y;
    ss >> z;
    vertVals.push_back(x);
    vertVals.push_back(y);
    vertVals.push_back(z);
}

    //if (line.compare(0, 2, "vt") == 0) {
        //stringstream ss(line.erase(0, 2));
        //ss >> x; ss >> y;
        //stVals.push_back(x);
        //stVals.push_back(y);
    //}
    //if (line.compare(0, 2, "vn") == 0) {
        //stringstream ss(line.erase(0, 2));
        //ss >> x; ss >> y; ss >> z;
        //normVals.push_back(x);
        //normVals.push_back(y);
        //normVals.push_back(z);
    //}
for (i = 0; i < r- n; i++){
    string oneCorner, v, t, n;
    stringstream ss(line.erase(0, 2));
    for (int i = 0; i < 3; i++) {
        getline(ss, oneCorner, ',');
        stringstream oneCornerSS(oneCorner);
        getline(oneCornerSS, v, '/');
            //getline(oneCornerSS, t, '/');
            //getline(oneCornerSS, n, '/');

        int vertRef = (stoi(v) - 1) * 3;
            //int tcRef = (stoi(t) - 1) * 2;
            //int normRef = (stoi(n) - 1) * 3;
        //front1
        triangleVerts.push_back(vertVals[vertRef+4]);
        triangleVerts.push_back(vertVals[vertRef + 7]);
        triangleVerts.push_back(vertVals[vertRef + 3]);
        //front2
        triangleVerts.push_back(vertVals[vertRef + 3]);
        triangleVerts.push_back(vertVals[vertRef ]);
        triangleVerts.push_back(vertVals[vertRef +4]);
        //back1
        triangleVerts.push_back(vertVals[vertRef + 2]);
        triangleVerts.push_back(vertVals[vertRef + 1]);
        triangleVerts.push_back(vertVals[vertRef + 5]);
        //back2
        triangleVerts.push_back(vertVals[vertRef + 5]);
        triangleVerts.push_back(vertVals[vertRef+6]);
        triangleVerts.push_back(vertVals[vertRef + 2]);
        //right1
        triangleVerts.push_back(vertVals[vertRef + 2]);
        triangleVerts.push_back(vertVals[vertRef + 1]);
        triangleVerts.push_back(vertVals[vertRef ]);
        //right2
        triangleVerts.push_back(vertVals[vertRef ]);
        triangleVerts.push_back(vertVals[vertRef + 3]);
        triangleVerts.push_back(vertVals[vertRef + 2]);
        //left1
        triangleVerts.push_back(vertVals[vertRef + 4]);
        triangleVerts.push_back(vertVals[vertRef + 5]);
        triangleVerts.push_back(vertVals[vertRef+6]);
        //left2
        triangleVerts.push_back(vertVals[vertRef+6]);
        triangleVerts.push_back(vertVals[vertRef + 4]);
        triangleVerts.push_back(vertVals[vertRef + 7]);
        //head1
        triangleVerts.push_back(vertVals[vertRef + 4]);
        triangleVerts.push_back(vertVals[vertRef + 1]);
        triangleVerts.push_back(vertVals[vertRef + 5]);
        //head2
        triangleVerts.push_back(vertVals[vertRef + 4]);
        triangleVerts.push_back(vertVals[vertRef + 0]);
        triangleVerts.push_back(vertVals[vertRef + 1]);
        //bottom1
        triangleVerts.push_back(vertVals[vertRef + 3]);
        triangleVerts.push_back(vertVals[vertRef + 2]);
        triangleVerts.push_back(vertVals[vertRef + 6]);
        //bottom2
        triangleVerts.push_back(vertVals[vertRef + 6]);
        triangleVerts.push_back(vertVals[vertRef + 7]);
        triangleVerts.push_back(vertVals[vertRef + 3]);
            //textureCoords.push_back(stVals[tcRef]);
            //textureCoords.push_back(stVals[tcRef + 1]);

            //normals.push_back(normVals[normRef]);
            //normals.push_back(normVals[normRef + 1]);
            //normals.push_back(normVals[normRef + 2]);
        }
    }
}
运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

乍看起来c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在输入、输出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf简单,不用格式控制符!
但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。
摒弃cin、cout、ifstream、ofstream、istringstream、ostringstream!
使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。