有谁根据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)。 –