无法从'const wchar_t*'转换为'_TCHAR*'

bob*_*lex 6 c++ porting visual-c++-6 visual-studio-2008

_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440
Run Code Online (Sandbox Code Playgroud)

在VS2008中编译此代码时,我在上面的行中收到错误.在VC6中它编译得很好.

错误C2440:'=':无法从'const wchar_t*'转换为'_TCHAR*'

什么似乎是问题,我该如何解决?

Căt*_*tiș 7

strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
Run Code Online (Sandbox Code Playgroud)

这是因为您正在使用的函数的变体具有const _TCHAR*作为输入并返回const _TCHAR*.

另一个变体是将strTempName声明为_TCHAR*,而不是const _TCHAR*.在这种情况下,使用具有_TCHAR*参数并返回_TCHAR*值的变量函数.


Jac*_*ble 6

尝试将其投射为

strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
Run Code Online (Sandbox Code Playgroud)

在我看来VS2008对类型转换有一点严格,在某些情况下不会自动执行.

  • 使用const_cast. (4认同)