stringstream float fehler .obj Wavefront



  • Hallo zusammen,

    ich habe ein Problem beim einlesen einer .obj Datei mit Hilfe von stringstream.

    Hier der Code:

    while(!ifs.eof())
    	{
    		string line;
    		getline(ifs, line);
    
    		if(line.find("v  ") != string::npos)
    		{
    
    			stringstream iss(line);
    
    			float f1;
    			iss >> f1;
    			cout << f1;
    
    		}
    ...
    

    für f1 kommt immer eine -1.07374e+008. D.h. er liest die Werte gar nicht ein?!



  • Dann steht am Beginn der Zeile wohl keine Zahl...



  • Oh, ok.

    Ich habe es so verstanden, dass automatisch nach dem nächsten float Wert gesucht wird.

    Dann muss ich wohl noch ein bisschen recherchieren 🙂
    Außer jemand sagt mir gleich die Lösung 😃
    Aber davon kann man nicht ausgehen 😛 sonst lernt man schließlich nicht dazu



  • Du musst am besten eine Fehlerbehandlung einbauen:

    if(iss >> f1)
        std::cout << f1;
    else
        //Fehlerbehandlung. Bspw. irgendwas werfen
    

    Dazu wäre es ratsam, dass man die EOF-Abfrage in andere Abfragen auslagert.
    Sprich: Dein Code ist redundant. Stattdessen einfach eine deiner Extraktionen überprüfen.

    Ich habe es so verstanden, dass automatisch nach dem nächsten float Wert gesucht wird.

    Ja, so ist es richtig.


Anmelden zum Antworten