CArchive spinnt? Was mach ich falsch.
-
Hallo, ich versuche in
void ...Doc::Serialize(CArchive& ar)
Eine ASCII Datei zu laden:
if (ar.IsLoading) { CString s; int numOfPoints; std::ofstream FileOut("out.asc", std::ios::out); ar >> s; // immer laden... FileOut << s; // ...und zum Test gleich wieder in Outfile schreiben ar >> s; FileOut << s; ar >> s; FileOut << s; ar >> s; FileOut << s; ar >> numOfPoints; FileOut << numOfPoints; ar >> s; FileOut << s << std::endl;; numOfPoints = 10; for(int i1 = 0; i1 < numOfPoints; i1++) { float x,y,z; ar >> x >> y >> z; FileOut << x << " " << y << " " << z << std::endl; }
Ein CArchive kann ich doch wie einen Stream (zum
>> und <<
) verwenden? Oder gibts da was zu beachten?
Das Programm sollte jetzt ja einfach die Datei öffnen und wieder in "out.asc". Das geht soweit auch wenn 'ar' ein ifstream ist. Wenn nicht (Also in MFC) macht das Programm aus folgender Eingabe:
infile.txt schrieb:
**number of points : 35599 **
-1.33 13.71 -16.12
-1.12 13.71 -16.24
-10.90 20.12 -10.73
-11.92 23.08 -5.70
-12.41 23.31 -5.58
-12.20 23.32 -5.66
-11.95 23.32 -5.72
-12.52 23.54 -5.68
-12.26 23.55 -5.71
-12.63 23.76 -5.79
-12.40 23.80 -5.81
-12.91 23.97 -5.78
-13.16 24.17 -5.73diese Ausgabe:
outfile.txt schrieb:
hier_fehlt_schon_ein_{STERN}*number of points : 35599 **
-1.33 13.71 -hier_fehlt_ne_16.12
-1.12 13.71 -16.24
-10.90 20.12 -10.73
-11.9 23.08 -5.70
-12.41 23.31 -5.58
-12.20 23.32 -5.66hier_fehlt_ein_Umbruch-11.95 23.757084723.72**<-hier_stimmt_auch_was_nicht**
-12.52 23.54 -5.68
-12.26 23.55 -5.71
-12.63 23.7**<-ab_hier_stimmt_garnichts_mehr**
6.44944e-007 8.9178e-033 4.05162e-011
9.32419e-009 6.70045e-010 4.11947e-011
7.85532e-012 0.000166126 4.14731e-008
1.55196e-019 1.03836e-005 2.51806e-009
2.64019e-006 4.09718e-011 9.1072e-012
4.265e-008 1.0313e-008 1.56043e-019
2.535e-009 6.44944e-007 8.6291e-033
4.07436e-011 9.32555e-009 4.272e-005
4.11947e-011 7.85554e-012 6.33736e-010
1.65893e-007 1.50097e-019 0.000166137Hat jemand ne Idee? wie gesagt, wenn ich das Ganze ohne MFC mit string statt CString und ifstream statt CArchive mache geht es wunderbar?!
-
nein, das kannst du (leider) nicht. jedenfalls ist mir das nicht bekannt.
ein archive kann entweder nur laden(load) oder nur senden(store)
in deinem beispiel willst du einmal etwas in dein archive laden unn dann wieder senden - das geht nicht.
-
blackworm schrieb:
nein, das kannst du (leider) nicht. jedenfalls ist mir das nicht bekannt.
ein archive kann entweder nur laden(load) oder nur senden(store)
in deinem beispiel willst du einmal etwas in dein archive laden unn dann wieder senden - das geht nicht.Nene, du verstehst da was falsch, ich möchte aus "ar" NUR lesen, geschrieben wird in einen "std::ofstream FileOut("out.asc", std::ios::out);"
Aber das Problem hab ich jetzt eh anders gelöst:
CString S; ar.ReadString(S); // zerstückel String