16 float Werte aus Datei in ein Array einlesen



  • Hallo,

    kann mir bitte jemand dabei helfen eine Datei der folgenden Form in einzulesen?
    Die Werte sollen in ein Array übernommen werden. Am Zeilenanfang steht ein Tabulator, nach dem Wert ist Zeilenende (EoL).

    Tabulator16,73EoL
    Tabulator36,43EoL
    Tabulator16,78EoL
    Tabulator46,67EoL
    Tabulator3,73EoL
    Tabulator22,72EoL
    Tabulator176,73EoL
    Tabulator146,40EoL
    Tabulator43,33EoL
    Tabulator93,73EoL
    Tabulator77,73EoL
    Tabulator16,53EoL
    Tabulator44,33EoL
    Tabulator3,73EoL
    Tabulator1,33EoL
    Tabulator12,73EoL

    Danke!!
    Gruß & schöne ProgrammierOstern, frodo



  • float array[16];
    ifstream in("myfile.txt");
    for(int i=0;i<16;++i)
       in >> array[i];
    in.close();
    


  • Original erstellt von japro:
    **```cpp
    float array[16];
    ifstream in("myfile.txt");
    for(int i=0;i<16;++i)
    in >> array[i];
    in.close();

    Aber nicht wenn die Floats in der Datei wirklich mit Komma statt Punkt stehen.
    Gibt es eine Möglichkeit dem stream zu sagen, dass er floats mit Komma nehmen soll?

    Ansonsten müsste man die Zeile einlesen, das Komma durch Punkt ersetzen und dann per atof() (oder stringstream) konvertieren.



  • Danke!

    Werte reinholen scheint prinzipiell zu funktionieren. Allerdings kommt beim Anzeigen Müll (17,434234E-29). Scheint noch im falschen Format zu sein. FloatToStr hat nichts genutzt. Siehst Du im unteren Code Fehler? (Ich zeige hier nur das erste Element im Array an).

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    float array[16];
    ifstream in("c:\\file.txt");
    for(int i=0;i<16;++i)
    {
    in >> array[i];
    }
    in.close();
    Edit1->Text=FloatToStr(array[1]);
    }



  • hmm stimmt auf das mit den kommas hab ich garnicht geachtet... das sollte man mit lokales irgendwie hinbiegen können ich weiss aber im mom nicht auswendig wie...



  • Original erstellt von DrGreenthumb:
    Aber nicht wenn die Floats in der Datei wirklich mit Komma statt Punkt stehen.
    Gibt es eine Möglichkeit dem stream zu sagen, dass er floats mit Komma nehmen soll?

    Lokales.


Anmelden zum Antworten