.NET CFVisual C++ 7.1Visual C++ 8.0Visual C++ 7.0C++/CLIWindows 2000Windows XP移动应用初学者开发Visual StudioWindowsC++.NET
托管字符串*数据类型到LPCTSTR的转换






1.79/5 (8投票s)
2004年10月5日
1分钟阅读

70601

440
一个将 VC++.NET String* 数据类型转换为传统 LPCTSTR 的类
引言
作为一名 VC++ 程序员,如果你正在使用 VC.NET,你可能会尝试在 .NET 框架下使用你旧的传统代码。
当我尝试使用我的一些旧 C++ 代码时,我遇到了 .NET 框架中的数据类型转换问题。我以为微软会在 .NET 中更好地处理数据类型问题。
无论如何,我遇到的一个问题是,要使用一个接收 LPCTSTR
数据类型参数的函数。在 .NET 中,你可以使用托管的 String* 数据类型,但编译器会报错,因为它无法将托管 String* 数据类型转换为 LPCTSTR
数据类型。
这个问题可以通过 .NET 框架中 Marshal
类提供的 StringToHGlobalAnsi
方法来处理,但这并不容易。你必须进行一些静态类型转换。
我想可能还有其他人遇到同样的问题,所以我决定创建一个小类,该类只有两个方法,用于将托管的 String*
数据类型转换为非托管的 LPCTSTR
数据类型。无论如何,我已经将代码放在一个类中,但你可以以你自己的方式使用它。
这两个方法是
LPCTSTR AnsiStrings::ConvertStringToLPCTSTR(String* sString)
你只需要将你的String*
变量传递给它,并接收一个LPCTSTR
变量。void AnsiStrings::ReleaseLPCTSTR(LPCTSTR lpsString)
这个方法将释放我们传统LPCTSTR
变量所持有的内存。
这是一个小类,但我希望 VC.NET 的初学者能够充分利用它。