有誰根據this site知道爲什麼這個代碼是不正確的:爲什麼在使用可變參數函數時必須將CString強制轉換爲LPCSTR?
CString First("John");
CString Last("Doe");
CString Name;
Name.Format("%s %s", First, Last); // Name may be garbage text
Name.Format("%s %s", (LPCSTR)First, (LPCSTR)Last); // this is the correct way
的CString::Format微軟文檔中說:
...當你傳遞一個字符串作爲可選參數,你必須明確地將其作爲LPCTSTR投...
我總是使用「錯誤」的方式(沒有LPCSTR轉換),我從來沒有遇到過問題。
我失去了一些東西在這裏?
關於此的有趣鏈接是[這裏](https://groups.google.com/forum/?fromgroups#!topic/microsoft.public.vc.mfc/Ao-A8D1-JT0)和[here](http ://stackoverflow.com/questions/922603/should-i-cast-a-cstring-passed-to-format-printf-and-varargs-in-general/924635#924635)。 –