【发布时间】:2012-01-28 20:59:30
【问题描述】:
strcpy 有一些问题...
收到此错误:
strcpy' : cannot convert parameter 2 from 'WCHAR *' to 'const char *
这里是代码...
char FunctionName[ 256 ];
UFunction *pUFunc = NULL;
strcpy( FunctionName, pUFunc->GetFullName() );
还有:
WCHAR* UObject::GetFullName ()
{
if ( this->Class && this->Outer )
{
static WCHAR ObjectName[ 256 ];
if (Outer == NULL)
{
wsprintf(ObjectName, L"");
}
else
{
if (Outer->Outer)
wsprintf(ObjectName, L"%s %s.%s.%s", Class->Name.GetName(), Outer->Outer->Name.GetName(), Outer->Name.GetName(), Name.GetName());
else if(Outer)
wsprintf(ObjectName, L"%s %s.%s", Class->Name.GetName(), Outer->Name.GetName(), Name.GetName());
}
return ObjectName;
}
return L"(null)";
}
【问题讨论】:
-
在这种情况下,错误消息非常清楚——
strcpy根本不处理宽 C 风格的字符串。此外,尝试存储在普通的 C 样式字符串中并没有任何意义。 -
请注意
strcpy()和wcscpy()都是用于复制字符串,而不是用于转换字符串。您需要一个不同的(非标准)函数来在普通char和WCHAR之间进行转换。 -
您的代码非常混乱。您正在访问已事先明确设置为 NULL 的对象指针的成员。
标签: c++ char constants strcpy wchar