添加const char时从'Platform :: String ^'转换为'const char *'

时间:2015-08-27 18:50:56

标签: windows-runtime c++-cli win-universal-app windows-10 uwp

我正在将代码(在Windows 10中使用C ++ VS2015)移植到通用Windows应用程序(UWP)。它使用一个宏(#define)在编译时连接各种const字符串,并将“const char *”作为参数发送给一个函数(不指向第一个元素)。一个简单的例子如下:

private void Start()
{
    target = Transform.Find(character); // <---- here
    lastTargetPosition = target.position;
    offsetZ = (transform.position - target.position).z;
    transform.parent = null;
}

在一个常见的C ++程序中,它打印

const char * s = ((const char *)("xxxx1234" "567" "89") + 4);
printf("[%s]", s );

同样,但对于“通用Windows”,会产生错误:

[123456789] // <-- OK

如果我省略“+ 4”它工作正常,但我得不到正确的指针偏移。打印

 error C2440: 'initializing': cannot convert from 'Platform::String ^' to 'const char *'

如何转换类型或避免将字符串定义为Platform :: String?最好在一行中,因为它是(#define)宏

1 个答案:

答案 0 :(得分:1)

好的,明白了。将其更改为

const char * s = (const_cast<char *>("xxxx1234" "567" "89") + 4);