in Datei gedruckt wird Ich habe eine C++ - Implementierung für einen Speziesbaum-Inferenzalgorithmus (https://bitbucket.org/ikramu/mixtreem/). Ich habe das Programm verwendet, um die Ergebnisse zu generieren (zuletzt November 2015). Kürzlich beschwerte sich ein Freund, dass das Programm kryptische hexadezimale Zeichen mit Baumspezies in die Datei schreibt. Wenn ich es überprüfte, stellt sich heraus, dass sowohl cout als auch ofstream beim Schreiben der Ausgabe in die Konsole/Datei Hexadezimalzeichen als Präfix verwenden.kryptisches hexadezimales Zeichen, das von C++ ofstream
Hier ist ein Beispiel Baum Zeichenfolge in falschem Format (((((gsLeaf_5_0:0x1.f48e471f06272p-3,gsLeaf_2_0:0x1.00dc26e053374p-1):0x1.323ffd29b8957p-1,gsLeaf_6_0:0x1.436dedaff881p-4):0x1.068e0e09d3ca6p-1,(gsLeaf_10_0:0x1.dddd5f73dc5a6p-1,(gsLeaf_0_0:0x1.7d04b4f035256p-4,(gsLeaf_9_0:0x1.c4789873fdf45p-1,gsLeaf_4_0:0x1.2821f2411930ap-6):0x1.9ac119403aff1p-5):0x1.60be9c70541f1p-4):0x1.44ea2f3a28908p-1):0x1.1e32eb27c05e3p-1,(gsLeaf_3_0:0x1.7a654ce448e53p-2,gsLeaf_8_0:0x1.78866bffd867ep-1):0x1.1835719e4a4fdp-3):0x1.5b907f43cbea7p-2,(gsLeaf_1_0:0x1.d517c27fc6fe9p-1,gsLeaf_7_0:0x1.ceaccb3d9531bp-1):0x1.2646ebc79ad1p-2,gsLeaf_11_0:0x1.0c5763dc4bda7p-1);
Hier ist ein Baum Zeichenfolge im richtigen Format (((gsLeaf_10_0:0.627669,gsLeaf_5_0:0.510248):0.998783,(gsLeaf_2_0:0.862504,gsLeaf_9_0:0.929773):0.109781):0.265052,(((gsLeaf_7_0:0.245532,(gsLeaf_8_0:0.941468,gsLeaf_6_0:0.099485):0.061383):0.002515,gsLeaf_4_0:0.768784):0.417351,gsLeaf_11_0:0.182966):0.848415,((gsLeaf_3_0:0.460478,gsLeaf_0_0:0.082105):0.881017,gsLeaf_1_0:0.451832):0.938306);
Wie ich von C/C++ für mehr als ein Jahr weg gewesen ist, ich don Ich weiß nicht, ob es an einigen Änderungen in der Plattform, der C++ - Version, der Architektur oder etwas anderem liegt. Der Code wurde seitdem nicht geändert (ich habe auch ältere Versionen des Codes kompiliert und getestet). Werde dankbar sein für irgendwelche Ideen/Hinweise?
UPDATE: Ich denke, es hat etwas damit zu tun, wie doppelte Werte (schlecht) gedruckt werden. Bitte sehen Sie sich die beigefügte Abbildung aus der Debugging-Sitzung an. Während der Wert Netbeans im Debugger -12315.334990286983 angezeigt wird, ist der gedruckte Wert (in Ausgabe im unteren Bereich) -0x1.80daae0f63389p + 13.
Können Sie den Code auf ein kleines Beispiel reduzieren, um es hier zu posten? Siehe http://stackoverflow.com/help/mcve – Hayt
@zaph Ich denke, die Code-Schrauben beim Drucken "Double/Float" -Werte. Siehe die Abbildung – Ikram
Bitte löschen Sie den Kommentar, der der Frage hinzugefügt wurde. – zaph