kleines STRING - problem



  • HALL0.

    ich habe ein problem mit den STRINGS. mein code (liest eine datei aus und schreibt alles in eine neue datei) sieht so aus:

    while (!datei.eof())
    	{
            getline(datei,ZEILE);
    		for (i=0;i<(int)ZEILE.size();i++)
    		{
    			if (ZEILE[i] == '/') break;
    			myfile << ZEILE[i];
    		}
    		myfile << "\n";
    	}
    

    nehmen wir an, eine zeile meiner datei sieht wie folgt aus:

    1.1 2.3 43 /das sind die coordinaten

    nun möchte ich die 3 zahlen mittels 'ATOF' in double zahlen umwandeln, dazu muss ich aber den gesamten "zeilenstring" aufteilen in 4 einzelne strings (für die 3 zahlen und den text).
    wie könnte ich dies umsetzen?

    VIELEN DANK.
    STICK.



  • Am besten schaust du dir mal die FAQ zum Thema "Einmal Zahl und zurück" an - den Ansatz mit Stringstreams kannst du auch hier umsetzen.



  • danke für die antwort. aber mein problem ist nicht die umwandlung von string in zahl, sondern das "zerschneiden" meines ganzen zeilenstrings in viele einzelne strings.

    DANKE.
    STICK.



  • Leerzeichen suchen und per substr() zerschneiden wäre ein Ansatz.

    (wobei: aus einem stringstream kannst du auch mehrere Zahlen extrahieren - der liest jeweils bis zum nächsten Leerzeichen)

    PS: Wenn du unbedingt C-Funktionen verwenden willst, nimm man: strtod und lass dir von der Funktion sagen, wo du beim nächsten Durchlauf weiterrechnen mußt.



  • #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
    
    int main()
    {
    	ifstream in;
    	string row = "";
    
    	in.open("foo.txt");
    	while(in>>row)
    	{
    		if(row.substr(0,1)!="/")
    			cout << row << endl;
    	}
    	in.close();
    
    	getchar();
    	return 0;
    }
    

    Mit in>>row werden hier Leerzeichen automatisch als Wertentrenner interpretiert. Somit erhälst du alle Werte einzeln, selbst wenn sie nebeneinander in einer Zeile stehen.
    Dann musst du nur noch den Kommentar ausfiltern (siehe Code), die Zeichenketten umwandeln (selber machen) und in Datei abspeichern (selber machen).

    Getestet mit foo.txt:

    2.5 3.66 10.0
    4.8 5.00 12.0 /Kommentar
    12.10 12.00
    

    Hoffe, das hilft 🙂



  • DANKE, mit 'substr' hat es funktioniert!

    STICK.


Anmelden zum Antworten