CString in CFile
-
Hallo
Ich versuche mich nun mal wieder an der MFC und scheitere schon beim Schreiben in eine Datei.
CString Test(_T("Hallo. Das ist ein test")); CFile FileToWriteIn; FileToWriteIn.Open(FileName, CFile::modeWrite | CFile::modeCreate); FileToWriteIn.Write(Test.GetBuffer(), Test.GetLength());Ich weiß allerdings nicht, ob das richtig ist. Gerade der zweite Parameter von write scheint nicht zu stimmen weil das die Ausgabe ist:
H a l l o . D a s i
Ich würde mich sehr über Hilfe freuen.
Danke
chrische
-
Überall wo du buffen angeben kannst, kannst du String angeben:
also
FileToWriteIn.Write(Test, Test.GetLength()):
-
probiers mal mit Test.GetLength() * 2 (Unicode).
-
Hallo
Das ändert aber an meiner Ausgabe nichts. Ist aber trotzdem schön zu wissen.
chrische
-
siehe post oben. GetLength() gibt die Anzahl der Zeichen des Strings zurück, wenn jedoch Unicode definiert ist stimmt diese Anzahl nicht mit der Größe in byte überein (mal 2). Es gibt sicher noch Konvertierungen die dies automatisch bewerkstelligen, kenne ich nur leider nicht.
-
Wenn du einfach nur lesbare Strings in ein File kopieren willst, also z.b. CString's in ein *.txt, dann empfehle ich dir CStdioFile.
Ansonsten könntest es auch so probieren, allerdings ist CArchive mehr dazu gedacht verschiedene Daten zusammen zu packen. Zeilenumbruch ist glaub ich damit gar nicht zu realisieren.
CString strTest(_T("Hallo. Das ist ein test")); CFile FileToWriteIn; if(FileToWriteIn.Open(FileName, CFile::modeWrite | CFile::modeCreate)) { CArchive ar(&FileToWriteIn, CArchive::store) if(ar.IsStoring()) { ar << strTest; } ar.Close(); FileToWriteIn.Close(); }Grüssli
-
Hallo
Ich bneutze jetzt CStdioFile und alles funktioniert einwandfrei.
Danke
chrische