Einlesen von Text in Array



  • Hallo Community,
    hab versucht in einer Windows Form Anwendung unter Visual Studio 2010 folgende Textdatei:
    100.100,100.100
    200.200,200.200
    ....
    einzulesen. Hierbei stehen jeweils zwei Werte in einer Zeile.
    Hier mein momentaner Quelltext:

    String^ path1 = openFileDialog1->FileName;
    			StreamReader^ sr = gcnew StreamReader (path1);
    			array<array<double>^>^ X;
    			int XStringsAmount=0;
    			int i;
    			X = gcnew array<array<double>^>(100);
    			String^ StringX;
    			while((StringX = sr->ReadLine()) != nullptr)
    			{
    				array<String^>^ Digits = StringX->Split(gcnew array<Char> {':',' ',';',',','	'});
    				X[XStringsAmount] = gcnew array<double>(Digits->Length);
    
    				for (i=0; i<Digits->Length; i++);
    				{
    					X[XStringsAmount][i]; //= Convert::ToInt32(Digits[i]);
    				}
    
    				XStringsAmount++;
    			}
    
    			sr->Close();
    

    Wenn ich mir nun eine Ausgabedatei zur Überprüfung ausgeben lasse bekomme statt meines Textes nur "System.Double[][]" ausgegeben.
    Kann natürlich auch an der Ausgabefunktion liegen:

    String^ path2 = saveFileDialog1->FileName;
    			StreamWriter^ sw = gcnew StreamWriter (path2);
    
    			sw->Write(X);
    			sw->Close();
    

    Bin neu auf dem Gebiet und komme leider nicht weiter, da ich nicht weiß, was ich falsch gemacht habe.
    Wäre super wenn mir jemand weiter helfen könnte und im voraus vielen Dank!



  • Das ist normal, du gibst das Double Array in den StreamWriter. Dieser schreibt alles, was ToString() liefert in die Datei. Wie du siehst, liefert ToString() "System.Double[][]".

    Die Richtige Variante wäre, die einzelnen Werte zu einem String hinzuzufügen und den String anschließend in die Datei zu schreiben.



  • Danke inflames für deine Antwort!
    Aber konvertiert ToString() die Datei nicht in einen String? Diesen Rückschluss hätte ich jetzt zumindest aus dem Namen gezogen. Leider finde ich unter Google keinen passenden Beitrag wie man diese Umwandlung unter C++/CLI durchführt. Werde natürlich weitersuchen aber falls jemand weiß wie es geht oder einen hilfreichen Link kennt würde ich mich darüber freuen.



  • Ähm, so schwer ist das nicht.

    Du erzeugst deinen String und lässt die Double-Werte als solche hineinschreiben.
    Folgendes Beispiel sollte zeigen wie man einen Doublewert in einen String bekommt. - Das nur als einfaches Beispiel, weiterführend solltest du dir String-Operationen wie z.B. Concat und Format anschauen.

    String^ value = X[0][0].ToString();
    


  • Danke Inflames für deine Hilfe! hab es nach langem ausprobieren endlich geschafft!


Anmelden zum Antworten