CString nach char[] casten für CFile.Write...
-
Ich habe mich mit den MFC befasst und davon nun einiges gelernt (nach .NET und Win32 was da natürlich auch nützt). Doch nun habe ich ein Problem; habe eine Übung für das Erstellen von Dateien, dort ist ein Text als Konstante angegeben (mit char[]). Ich wollte nun eine etwas sinnvollere Übung und den Text aus einem Editfeld speichern. Zuerst war die Datei leer, dachte wegen der CString-Membervariable des Editfeldes. Dann versuchte ich Datei.Write((char[])m_String, sizeof....) um CString nach char zu casten aber das geht nicht; wie stelle ich das an?
eine Methode im m_String fand ich auch nicht (oder erkannte sie nicht am Namen, wie etwa ToChar oder so).Vielen Dank!
-
CSimpleStringT::GetString()
Return Value: A pointer to a null-terminated character string.CStdioFile für Textdateien verwenden.
-
Vielen Dank! Kann es sein das bei Visual C++ 6.0 diese Klasse nicht vorhanden ist?
-
Na ganz bestimmt is die net da, aber versuch es doch einfach mal mit CString::GetBuffer() und danach CString::ReleaseBuffer() nicht vergessen.
Gruß Matthias
-
Nach LPCSTR gibts einen cast-Operator.
-
Stimmt auch wieder.
CString Text; Datei.Write((LPCTSTR)Text,Text.GetLength());Gruß Matthias
-
[quote="CTecS"]Stimmt auch wieder.
CString Text; Datei.Write((LPCTSTR)Text,Text.GetLength());Das ist ein Holzhammer. Besser static_cast<LPCTSTR>. Oder für den Zugriff auf den Zeiger CString::GetString verwenden.
-
Komisch, das hat alles nicht funktioniert, sowohl mit LPCSTR als auch LPCTSTR nicht, die Methode mit GetBuffer auch nicht, alerdings waren da immerhin schon zwei Zeichen in der Datei (die Adresse?)
-
Martin hast natürlich rRecht, aber mir stellt sich die Frage ob dein Projekt nicht UniCode is?
Gruß Matthias
-
Sollte kein Unicode sein (habe bei VC++ 6 auch keine Einstellung dafür gefunden wie bei VS2005, denke aber es ist eh nicht Unicode).
-
So es funktioniert nun! Und zwar mit diesem Code:
UpdateData(true); CStdioFile File; File.Open("mfcTestDatei.txt", CFile::modeCreate | CFile::modeWrite); File.WriteString(m_String); File.Close();