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 *
,所以这行不通。
我有代码:
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 *
,所以这行不通。