CString verliert Daten in einer Schleife
-
pale dog schrieb:
na, du siehst doch selbst an den letzten beiträgen. ich finde es nicht gut, wenn man in den daten eines objekts direkt herumwurschteln kann. meiner meinung nach dürfte ein 'GetBuffer()' bestenfalls einen 'const char*' zurückgeben. wer strings über char* verändern will, kann ja arrays benutzen...
Wieso? Gerade das ist eine der Stärken von CString. Man kann Speicher allokieren und ihn durch eine API Funktion füllen lassen. Das hierbei Vorsicht geboten ist versteht sich. std::string hat hier einfach den Nachteil das immer kopiert werden muss und Stack-/Heapspeicher zwischenverwendet werden muss.
-
Martin Richter schrieb:
pale dog schrieb:
na, du siehst doch selbst an den letzten beiträgen. ich finde es nicht gut, wenn man in den daten eines objekts direkt herumwurschteln kann. meiner meinung nach dürfte ein 'GetBuffer()' bestenfalls einen 'const char*' zurückgeben. wer strings über char* verändern will, kann ja arrays benutzen...
Wieso? Gerade das ist eine der Stärken von CString. Man kann Speicher allokieren und ihn durch eine API Funktion füllen lassen. Das hierbei Vorsicht geboten ist versteht sich. std::string hat hier einfach den Nachteil das immer kopiert werden muss und Stack-/Heapspeicher zwischenverwendet werden muss.
okay, hast ja recht. es ist wie so oft eine gratwanderung zwischen gutem OO design und maximaler brauchbarkeit. beides arbeitet gegeneinander

hab' mal gehört dass man sogar mit zwei oder mehr CStrings auf ein und denselben buffer verweisen kann...
-
pale dog schrieb:
okay, hast ja recht. es ist wie so oft eine gratwanderung zwischen gutem OO design und maximaler brauchbarkeit. beides arbeitet gegeneinander

hab' mal gehört dass man sogar mit zwei oder mehr CStrings auf ein und denselben buffer verweisen kann...So ist es. Intern benutzt CString ein Referenz Counting System. Das Kopieren eines String kostet keine Allokation!