CString-Variable in char-Feld
-
Wie lässt sich das machen?
Meine das etwa so:
char charfeld[100]=CString string;
(natürlich geht das so nicht).
-
Siehe FAQ
-
CString :: operator LPCTSTR liefert einen konstanten Pointer auf die Daten.
Beispiel:
#include <afx.h> #include <iostream> using namespace std; CString maxString( CString& A, CString& B ) { if (A >= B) return A; // hier erfolgt der Vergleich else return B; } CString minString( CString& A, CString& B ) { if (A <= B) return A; // hier erfolgt der Vergleich else return B; } int main() { char szString1[255]; // char-Array-String char szString2[255]; // char-Array-String cout << "Geben Sie bitte die erste Zeichenfolge ein: "; cin.getline( szString1, 255 ); cout << "Geben Sie bitte die zweite Zeichenfolge ein: "; cin.getline( szString2, 255 ); CString str1 = _T(szString1); CString str2 = _T(szString2); cout << "Der String \"" << LPCTSTR ( maxString( str1, str2 ) ) << "\" folgt nach dem String \"" << LPCTSTR ( minString( str1, str2 ) ) << "\"" << endl; while (cin.get() != '\n'); return 0; }
[ Dieser Beitrag wurde am 10.10.2002 um 03:09 Uhr von Erhard Henkes editiert. ]
-
@Erhard
CString str1 = _T(szString1);
CString str2 = _T(szString2);Ich dachte immer, _T funktioniert nur für konstante Strings
LPCTSTR t1 = _T("Hallo");
und dass man für dynamische Strings sowas hier verwenden muss:USES_CONVERSION; LPTSTR tstr1 = A2T( szString1); LPCTSTR tstr2 = A2CT( szString2);
-
Uups. Du hast Recht. Die Präprozessor-Direktive _T(...) ist hier überflüssig. Man sollte sie wirklich nur für konstante Strings verwenden. CString kümmert sich hier ja bestens selbst um die Umwandlung nach TCHAR.
Die von Dir angesprochenen Makros werden hier doch für CString aber auch nicht benötigt, wenn ich das richtig sehe.