2009-05-28 3 views
1

Ich habe vor kurzem eine kleine MCF C++ - Anwendung, die offensichtlich in einem Arbeitszustand ist. Um loszulegen, führe ich PC-Lint über den Code, und Lint beschwert sich, dass CStringT an Format übergeben werden. Die Meinung im Internet scheint geteilt zu sein. Einige sagen, dass CSting entwickelt wurde, um diesen Anwendungsfall ohne Fehler zu behandeln, aber andere (und eine MSDN article) sagen, dass es immer gegossen werden sollte, wenn es an eine Variable Argument-Funktion übergeben wird. Kann Stackoverflow zu einem Konsens über das Problem kommen?Sollte ich einen CString an Format/printf (und Varags im Allgemeinen) übergeben?

Antwort

3

CString wurde sorgfältig entworfen, um als Teil einer Variablenargumentliste weitergegeben zu werden, so ist es sicher, es auf diese Weise zu verwenden. Und Sie können ziemlich sicher sein, dass Microsoft darauf achten wird, dieses bestimmte Verhalten nicht zu brechen. So würde ich sagen, dass Sie sind sicher, um es weiter so zu verwenden, wenn Sie möchten.

Das sagte, persönlich würde ich die Besetzung bevorzugen.Es ist nicht allgemeines Verhalten, dass String-Klassen so verhalten (zB std :: string nicht) und für mentale Konsistenz ist es vielleicht besser, es auf die "sichere" Art zu tun.

S.S .: Siehe thread für Details zur Implementierung und weitere Hinweise zum Umwandeln.

Verwandte Themen