C ++中的String ^声明

时间:2011-07-31 16:21:15

标签: visual-c++ c++-cli

据我所知,C ++字符串声明遵循以下形式:

std::string param;

我正在浏览代码并意识到字符串的声明是这样完成的:

System::String^ param;

有人可以分享这份声明吗?!这是Microsoft Visual C ++字符串声明还是一个特殊的库,它提供了另一种使用C ++字符串的替代方法。

2 个答案:

答案 0 :(得分:9)

这是托管堆上对象C++/CLIhandle语法。

答案 1 :(得分:8)

它是Microsoft特有的,是他们称之为C ++ / CLI的语言的一部分。此语法声明了一个公共语言运行时(CLR)String变量(与在C#中声明string时获得的变量相同)。这些不能直接与几种C / C ++字符串类型互换,但Microsoft提供编组工具将CLR String对象转换为非托管字符串,反之亦然。

C ++ / CLI使开发人员能够创建使用CLR类/函数(也称为“托管代码”)来桥接常规C ++类/函数(也称为“非托管代码”)的程序。 Microsoft还将CLR的低级功能暴露给C ++ / CLI,其中一些也暴露给C#(如指针),而另一些则不暴露(比更精细的成员访问级别)。

如果要在C#等语言中使用现有的C或C ++库(通过在C ++ / CLI中进行绑定,然后将其暴露给CLR而不通过P / Invokes),或者如果要端口现有的非托管C / C ++库或托管环境的应用程序。