CString 到函数中的 const char * _Source strcpy_s

CString to const char * _Source in function strcpy_s

我有代码:

char buff[50000];
CString params = "sss" ;
strcpy_s(buff,params);

为什么 strcpy_s 接受第二个参数 CString?根据我的理解,第二个参数应该是 const char * _Source

类型

CString 有一个 LPCTSTR conversion operator。编译器调用它来将您的 CString 转换为所需的 const char *。所以编译器做的是:

strcpy_s(buff, (const char*)params);

相当于

strcpy_s(buff, (LPCTSTR)params);

这就像

strcpy_s(buff, params.operator LPCTSTR());

这仅在您不针对 Unicode 进行编译时有效。在 Unicode 上,LPCTSTR 不是 const char *,而是 const WCHAR *,所以这行不通。