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

时间:2009-06-16 05:37:04

标签: c++ visual-studio-2008 porting vc6

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

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440

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

  

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

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

4 个答案:

答案 0 :(得分:6)

strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));

这是因为你正在使用的函数的变体有一个const _TCHAR *作为输入并返回一个const _TCHAR *。

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

答案 1 :(得分:5)

尝试将其转换为

strGroupName = (_TCHAR*)_tcschr(strTempName, 92);

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

答案 2 :(得分:2)

_tcschr正在返回一个const指针。因此返回值应为const _TCHAR* strGroupName = NULL;如果无法将strGroupName更改为const指针,则将两个指针都声明为非常量指针。

答案 3 :(得分:1)

strGroupName也应该是const的指针。

const _TCHAR* strGroupName = _tcschr(strTempName, 92);

在调用初始化之前无需声明它。